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

C# 在我第一次建立UdpClient端口后,如何更改它(每个套接字地址通常只允许使用一次),c#,udp,udpclient,C#,Udp,Udpclient,因此,我正在尝试制作一些允许用户更改连接的东西…(忽略IP代码,因为该部分没有出错…,只是端口) 因此,假设用户连接一次: public FeedbackListener _feedback; _feedback = new FeedbackListener(Convert.ToInt32(port)); 他们尝试断开连接并重新连接到不同的端口: //_udpListener.Close(); tried this, just turns into another about access

因此,我正在尝试制作一些允许用户更改连接的东西…(忽略IP代码,因为该部分没有出错…,只是端口)

因此,假设用户连接一次:

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

比如:

private static IPEndPoint _listeningEndPoint = null;

public FeedbackListener( int feedbackPort )
{
    if ( _listeningEndPoint == null)
    {
       _listeningEndPoint =  new IPEndPoint( IPAddress.Any, feedbackport);
    }
    else
    {
        _listeningEndPoint.Port = feedbackport;
    } 
}

如果我不新建IPEndPoint(如果它已经存在),但只更改
端口
属性(
\u listingendpoint.Port=feedbackport
),它不会为我抛出错误。你能试试在你的全面场景中是否有效吗?嘿,雷内。刚吃过午饭回来,我会在几分钟内尝试一下,然后再给你回复,谢谢你的回复。它成功了!非常感谢你。你可以把你所说的作为这个问题的答案贴出来,这样我就可以给你打分了
private static IPEndPoint _listeningEndPoint = null;

public FeedbackListener( int feedbackPort )
{
    if ( _listeningEndPoint == null)
    {
       _listeningEndPoint =  new IPEndPoint( IPAddress.Any, feedbackport);
    }
    else
    {
        _listeningEndPoint.Port = feedbackport;
    } 
}