我有一个使用 UDP 套接字发送数据的客户端-服务器应用程序,数据只需要从客户端传输到服务器,并且服务器将始终具有相同的 IP。唯一的要求是我必须每秒发送大约 10 条消息
目前我是按照以下方式做的:
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”方法中做一些检查? 上面的代码有没有问题?
谢谢!
最佳答案
UDP 是无连接的,调用 udpChannel.Connect 只是指定一个默认主机端点以与 Send 方法一起使用。您不需要在发送之间关闭客户端,保持打开状态不会留下任何连接或在发送之间运行的监听器。
关于c# - 何时关闭 UDP 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19819927/