尝试在停止tcpListener后启动tcpListener时“正在使用地址”

时间:2014-01-28 12:12:15

标签: c# ios sockets xamarin

我将这个tcpListener启动到端口3000上的任何ip,所以在我关闭运行此方法的弹出窗口后,我调用tcpListener.Stop()。 在我再次重复使用之后,我得到了这个例子“Adress已经在使用中”所以我在想如何清理那个地址或类似的东西,以便我可以再次开始听它?

tcpListener = new TcpListener (IPAddress.Any, 3000);

这是代码。

我已经尝试过清理那扇门,无论如何我都能想到,但是没有用,tcplistener没有办法清除那个。

任何想法?

2 个答案:

答案 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);