Работа с протоколом UDP - C# (240539)
Формулировка задачи:
Добрый день!!!
Ситуация такая есть клиент и сервер работают по протоколу udp, я отправляю с клиентской части сообщение а сервер его получает проблем нет.
А можно ли организовать так: я отправляю с клиента сообщение если сообщение дошло до сервера выдается сообщение что все в порядке если нет то через 5 секунд происходит повтор выполнения программы. У меня абсолютно ни каких идей нет.
Заранее спасибо.
Клиент
using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; namespace UDP_Client { class Program { static void Main(string[] args) { Console.WriteLine("Введите ip адрес"); string addr = Console.ReadLine(); Console.WriteLine("Введите номер порта?"); int port = int.Parse(Console.ReadLine()); Console.WriteLine("Введите текст для отправки"); string temp = Console.ReadLine(); Console.WriteLine("Нажмите любую кнопку для передачи данных"); Console.ReadKey(); //Создаем сокет Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //вводим необходимые параметры для удаленного сокета IPAddress ip = IPAddress.Parse(addr); IPEndPoint ipe = new IPEndPoint(ip, port); //разрешение широковещательного адреса s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true); byte[] buffer = Encoding.ASCII.GetBytes(temp); //передаем данные s.SendTo(buffer, ipe); //закрываем сокет s.Close(); Console.ReadKey(); } } }
Решение задачи: «Работа с протоколом UDP»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; namespace UDP_Serv { class Program { static void Main(string[] args) { Console.WriteLine("Введите номер порта?"); int port = int.Parse(Console.ReadLine()); //Создаем локальный сокет Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //вводим необходимые параметры для локального сокета IPAddress ip = IPAddress.Any; IPEndPoint ipe = new IPEndPoint(ip, port); s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast,true); //объеденяем сокет с параметрами s.Bind(ipe); byte[] buffer = new byte[256]; //создаем структуру для удаленного сокета IPAddress ipRem = IPAddress.Any; int portRem = 0; IPEndPoint Rem = new IPEndPoint(ipRem, portRem); EndPoint EndRem = (EndPoint)Rem; Console.WriteLine("Ожидаем данные"); //прием данных //параметры удаленного сокета будут содержаться в EndRem string data = ""; try { s.ReceiveFrom(buffer, ref EndRem); data = Encoding.ASCII.GetString(buffer); Console.WriteLine("Прием данных закончен"); //закрываем сокет s.Close(); } catch { ??????????????????????????????? } Console.WriteLine(data); Console.ReadKey(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д