【发布时间】:2013-11-18 03:40:36
【问题描述】:
我有一个客户端-服务器应用程序,它使用 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”方法进行一些检查? 上面的代码有问题吗?
谢谢!
【问题讨论】: