Клиент-серверное приложение с использование классов UdpClient и multicast - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Возможно ли создать подобие чата между клиентом и сервером, используя класс UdpClient и multicast? То есть сервер должен послать сообщение и ждать ответа от клиента, потом снова послать сообщение и получить ответ от клиента и т. д. Пока получилось отправить только одно сообщение. Сервер:
// Create object UdpClient
            UdpClient udpClient = new UdpClient();
 
            // IPAddress of group
            IPAddress multicastaddress = IPAddress.Parse("224.192.168.255");
 
            try
            {
                // Join group
                udpClient.JoinMulticastGroup(multicastaddress);
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: " + e.ToString());
            }
 
            // Create object IPEndPoint
            IPEndPoint remoteep = new IPEndPoint(multicastaddress, 2345);
 
            // Print message
            Console.WriteLine("Server is running ...\n\nEnter message to send: ");
 
            // Data in Byte []
            Byte[] buffer = Encoding.Unicode.GetBytes(Console.ReadLine());
 
            try
            {
                // Send data using IPEndPoint
                udpClient.Send(buffer, buffer.Length, remoteep);
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: " + e.ToString());
            }
 
            // Leave the group
            udpClient.DropMulticastGroup(multicastaddress);
 
            // Close connection
            udpClient.Close();
Клиент:
// Create UDP client
            UdpClient client = new UdpClient();
 
            // Create new IPEndPoint
            IPEndPoint localEp = new IPEndPoint(IPAddress.Any, 2345);
 
            // Set socket options
            client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
 
            // Bind to IPEndPoint
            client.Client.Bind(localEp);
 
            // IP address
            IPAddress multicastaddress = IPAddress.Parse("224.192.168.255");
 
            try
            {
                // Join group
                client.JoinMulticastGroup(multicastaddress);
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: " + e.ToString());
            }
 
            Console.WriteLine("Client is running ...\n\n");
 
            // Receive data
            Byte[] data = client.Receive(ref localEp);
            string strData = Encoding.Unicode.GetString(data);
            Console.WriteLine("Server: " + strData + "\n");
 
            // Leave the group
            client.DropMulticastGroup(multicastaddress);
 
            // Close connection
            client.Close();
Заранее спасибо!

Решение задачи: «Клиент-серверное приложение с использование классов UdpClient и multicast»

textual
Листинг программы
using System;
using System.Text;
using System.Net.Sockets;
using System.Net;
 
namespace Client
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create UDP client
            UdpClient client = new UdpClient();
 
            // Create new IPEndPoint
            IPEndPoint localEp = new IPEndPoint(IPAddress.Any, 2345);
 
            // Set socket options
            client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
 
            // Bind to IPEndPoint
            client.Client.Bind(localEp);
 
            // IP address
            IPAddress multicastaddress = IPAddress.Parse("224.192.168.255");
 
            try
            {
                // Join group
                client.JoinMulticastGroup(multicastaddress);
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: " + e.ToString());
            }
 
            Console.WriteLine("Client is running ...\n\n");
 
            // Receive data
            while (true)
            {
                Byte[] data = client.Receive(ref localEp);
                string strData = Encoding.Unicode.GetString(data);
                Console.WriteLine("Server: " + strData + "\n");
                if (strData == "Bye!")
                    break;
            }
 
            // Leave the group
            client.DropMulticastGroup(multicastaddress);
 
            // Close connection
            client.Close();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы