У меня есть клиент-серверное приложение, использующее сокет UDP для отправки данных, данные должны перемещаться только от клиента к серверу, а сервер всегда будет иметь тот же IP-адрес. Единственное требование состоит в том, что я должен отправлять сообщения о 10 сообщений в секундуКогда закрывать UDP-сокет
В настоящее время я делаю это следующим образом:
public void SendData(byte[] packet)
{
IPEndPoint end_point = new IPEndPoint(serverIP, serverPort);
UdpClient udpChannel = new UdpClient(sourcePort);
udpChannel.Connect(end_point);
udpChannel.Send(packet, packet.Length);
udpChannel.Close();
}
У меня есть проблема в том, что, когда я использую команду «udpChannel.Close() "требуется 2-3 секунды, когда сервер не прослушивает. (Я видел ту же проблему в: What is the drawback if I do not invoke the UdpClient.Close() method?)
Вопрос был бы в том, что если я всегда отправляю пакеты на один и тот же IP-адрес и порт, нужно ли подключать сокет и закрывать его после каждого запроса на отправку?
Код я намерен использовать будет выглядеть следующим образом:
UdpClient udpChannel;
public void SendData(byte[] packet)
{
udpChannel.Send(packet, packet.Length);
}
public void Initialize(IPAddress IP, int port)
{
IPEndPoint end_point = new IPEndPoint(serverIP, serverPort);
UdpClient udpChannel = new UdpClient(sourcePort);
udpChannel.Connect(end_point);
}
public void Exit()
{
udpChannel.Close();
}
делая это таким образом, было бы необходимо сделать некоторые проверки в методе «SendData» перед отправкой данных? Есть ли какие-либо проблемы в приведенном выше коде?
Спасибо!