何时关闭UDP套接字

Jos*_* B. 5 c# sockets udp

我有一个客户端 - 服务器应用程序,它使用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方法的默认主机端点.您不需要在发送之间关闭客户端,使其保持打开状态不会在发送之间保持任何连接或侦听器运行.