第一次建立 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));
我收到此错误:通常只允许每个套接字地址使用一次...那么有什么方法可以成功更改端口而不会收到此错误?
您只需保留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;
}
}