Работа с протоколом 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();
}
}
}