我有一个客户端 - 服务器应用程序,它使用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();
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是当我使用命令"udpChannel.Close()"时,服务器没有收听时需要2-3秒.(我已经看到了同样的问题:如果我不调用UdpClient.Close()方法有什么缺点?)
我的问题是,如果我总是将数据包发送到相同的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();
}
Run Code Online (Sandbox Code Playgroud)
这样做,在发送数据之前是否有必要检查"SendData"方法?上面的代码有什么问题吗?
谢谢!
Ash*_*ore 10
UDP是无连接的,调用udpChannel.Connect仅指定用于Send方法的默认主机端点.您不需要在发送之间关闭客户端,使其保持打开状态不会在发送之间保持任何连接或侦听器运行.
| 归档时间: |
|
| 查看次数: |
9725 次 |
| 最近记录: |