第一次建立 UdpClient 端口后,如何更改它(通常只允许每个套接字地址使用一次)

本文关键字:套接字 许每个 地址 一次 UdpClient 建立 第一次 何更改 | 更新日期: 2023-09-27 18:35:14

所以我正在尝试制作允许用户更改连接的东西。(忽略IP代码,因为该部分没有错误..只是端口)

    private readonly UdpClient _udpListener;
    private IPEndPoint _listeningEndPoint;
    public FeedbackListener( int feedbackPort )
    {
        _listeningEndPoint = new IPEndPoint( IPAddress.Any, _feedbackPort );            
        _udpListener = new UdpClient( _listeningEndPoint );
    }

假设用户连接一次:

public FeedbackListener _feedback;
_feedback = new FeedbackListener(Convert.ToInt32(port));

他们尝试断开并使用其他端口重新连接:

//_udpListener.Close();  tried this, just turns into another about accessing a disposed object
_feedback = new FeedbackListener(Convert.ToInt32(port));

我收到此错误:通常只允许每个套接字地址使用一次...那么有什么方法可以成功更改端口而不会收到此错误?

第一次建立 UdpClient 端口后,如何更改它(通常只允许每个套接字地址使用一次)

您只需保留IPEndPoint的一个实例,并且仅在要实例化新UdpClient时才更新Port

像这样:

private static IPEndPoint _listeningEndPoint = null;
public FeedbackListener( int feedbackPort )
{
    if ( _listeningEndPoint == null)
    {
       _listeningEndPoint =  new IPEndPoint( IPAddress.Any, feedbackport);
    }
    else
    {
        _listeningEndPoint.Port = feedbackport;
    } 
}
相关文章: