Клиент-серверное приложение с использование классов 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();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д