我将这个tcpListener启动到端口3000上的任何ip,所以在我关闭运行此方法的弹出窗口后,我调用tcpListener.Stop()。 在我再次重复使用之后,我得到了这个例子“Adress已经在使用中”所以我在想如何清理那个地址或类似的东西,以便我可以再次开始听它?
tcpListener = new TcpListener (IPAddress.Any, 3000);
这是代码。
我已经尝试过清理那扇门,无论如何我都能想到,但是没有用,tcplistener没有办法清除那个。
任何想法?
答案 0 :(得分:4)
我不确定你的问题,但是在你再次开始听之前你是否关闭了听众?
我认为引发异常是因为你想要监听一个reserverd端口。 在开始再次侦听端口3000之前,尝试关闭侦听器。
tcpListener.Close();
贪欲却无止境, Lacky
答案 1 :(得分:4)
要进入的良好习惯是using关键字,它将在完成后自动关闭连接。例如:
using (TcpClient tcpClient = new TcpClient())
{
//operations
tcpClient.Close();
}
如果您需要强行释放套接字,可以设置SO_REUSEADDR套接字选项。您需要在绑定到侦听端口之前执行此操作。
SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);