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

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

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

Здравствуйте! Возможно ли создать подобие чата между клиентом и сервером, используя класс UdpClient и multicast? То есть сервер должен послать сообщение и ждать ответа от клиента, потом снова послать сообщение и получить ответ от клиента и т. д. Пока получилось отправить только одно сообщение. Сервер:
Листинг программы
  1. // Create object UdpClient
  2. UdpClient udpClient = new UdpClient();
  3. // IPAddress of group
  4. IPAddress multicastaddress = IPAddress.Parse("224.192.168.255");
  5. try
  6. {
  7. // Join group
  8. udpClient.JoinMulticastGroup(multicastaddress);
  9. }
  10. catch (Exception e)
  11. {
  12. Console.WriteLine("Error: " + e.ToString());
  13. }
  14. // Create object IPEndPoint
  15. IPEndPoint remoteep = new IPEndPoint(multicastaddress, 2345);
  16. // Print message
  17. Console.WriteLine("Server is running ...\n\nEnter message to send: ");
  18. // Data in Byte []
  19. Byte[] buffer = Encoding.Unicode.GetBytes(Console.ReadLine());
  20. try
  21. {
  22. // Send data using IPEndPoint
  23. udpClient.Send(buffer, buffer.Length, remoteep);
  24. }
  25. catch (Exception e)
  26. {
  27. Console.WriteLine("Error: " + e.ToString());
  28. }
  29. // Leave the group
  30. udpClient.DropMulticastGroup(multicastaddress);
  31. // Close connection
  32. udpClient.Close();
Клиент:
Листинг программы
  1. // Create UDP client
  2. UdpClient client = new UdpClient();
  3. // Create new IPEndPoint
  4. IPEndPoint localEp = new IPEndPoint(IPAddress.Any, 2345);
  5. // Set socket options
  6. client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
  7. // Bind to IPEndPoint
  8. client.Client.Bind(localEp);
  9. // IP address
  10. IPAddress multicastaddress = IPAddress.Parse("224.192.168.255");
  11. try
  12. {
  13. // Join group
  14. client.JoinMulticastGroup(multicastaddress);
  15. }
  16. catch (Exception e)
  17. {
  18. Console.WriteLine("Error: " + e.ToString());
  19. }
  20. Console.WriteLine("Client is running ...\n\n");
  21. // Receive data
  22. Byte[] data = client.Receive(ref localEp);
  23. string strData = Encoding.Unicode.GetString(data);
  24. Console.WriteLine("Server: " + strData + "\n");
  25. // Leave the group
  26. client.DropMulticastGroup(multicastaddress);
  27. // Close connection
  28. client.Close();
Заранее спасибо!

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

textual
Листинг программы
  1. using System;
  2. using System.Text;
  3. using System.Net.Sockets;
  4. using System.Net;
  5.  
  6. namespace Client
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             // Create UDP client
  13.             UdpClient client = new UdpClient();
  14.  
  15.             // Create new IPEndPoint
  16.             IPEndPoint localEp = new IPEndPoint(IPAddress.Any, 2345);
  17.  
  18.             // Set socket options
  19.             client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
  20.  
  21.             // Bind to IPEndPoint
  22.             client.Client.Bind(localEp);
  23.  
  24.             // IP address
  25.             IPAddress multicastaddress = IPAddress.Parse("224.192.168.255");
  26.  
  27.             try
  28.             {
  29.                 // Join group
  30.                 client.JoinMulticastGroup(multicastaddress);
  31.             }
  32.             catch (Exception e)
  33.             {
  34.                 Console.WriteLine("Error: " + e.ToString());
  35.             }
  36.  
  37.             Console.WriteLine("Client is running ...\n\n");
  38.  
  39.             // Receive data
  40.             while (true)
  41.             {
  42.                 Byte[] data = client.Receive(ref localEp);
  43.                 string strData = Encoding.Unicode.GetString(data);
  44.                 Console.WriteLine("Server: " + strData + "\n");
  45.                 if (strData == "Bye!")
  46.                     break;
  47.             }
  48.  
  49.             // Leave the group
  50.             client.DropMulticastGroup(multicastaddress);
  51.  
  52.             // Close connection
  53.             client.Close();
  54.         }
  55.     }
  56. }

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


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

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

15   голосов , оценка 4.133 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы