0

所以我正在尝试做一些允许用户更改连接的东西..(忽略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));

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

4

1 回答 1

1

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

就像是:

private static IPEndPoint _listeningEndPoint = null;

public FeedbackListener( int feedbackPort )
{
    if ( _listeningEndPoint == null)
    {
       _listeningEndPoint =  new IPEndPoint( IPAddress.Any, feedbackport);
    }
    else
    {
        _listeningEndPoint.Port = feedbackport;
    } 
}
于 2013-10-15T10:56:18.357 回答