我有一个循环打开一个套接字,作用于套接字,然后关闭套接字并重新启动。但是,在我得到的第二次迭代SocketException
中,每个套接字地址(协议/网络地址/端口)通常只允许使用一次。
但是,套接字应该关闭,netstat -a
并不表明我正在侦听该端口或其他任何东西。抛出异常的代码是:
_bindedLocalSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_bindedLocalSocket.Bind(new IPEndPoint(Util.ChannelProfileToListeningAddress(_profile), _profile.ListenPort));
_bindedLocalSocket.Listen(30);
_bindedLocalSocket.BeginAccept(new AsyncCallback(OnRequested), null);
但是,我认为罪魁祸首不是那个代码,就在我得到那个代码之前,在我尝试关闭连接之前,我得到了这个:
现有连接被远程主机强行关闭 在 System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult) 在 Poderosa.PortForwarding.SynchronizedSocket.EndReceive(IAsyncResult ar) 在 Poderosa.PortForwarding.Channel.OnSocketData(IAsyncResult 结果)
一旦我关闭程序并再次运行它,它可以使第一个连接正常,第二个行为相同(SocketException)。有谁知道我该如何解决这个问题?