我可以从本地端点取消绑定套接字吗?出于安全考虑,我需要修复TCP端口的源端口。在此客户端代码中,我将源端口修复为42448
:
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
ProtocolType.Tcp);
IPEndPoint localEP = new IPEndPoint(IPAddress.Parse("192.168.1.123"), 42448);
s.Bind(localEP);
s.Connect(remoteEP);
s.Send(new byte[] { 0x01, 0x02, 0x03 });
s.Close();
它只工作一次。第二次它在SocketException
行上抛出s.Connect
(已经在使用的地址),正如我在netstat
中看到的那样,此源端口42448
与{{{ 1}}状态,即使我关闭应用程序。大约1分钟后,此TIME_WAIT
连接消失,我可以运行我的代码,但只需再次运行一次。我怎样才能正确解开这个套接字,这样我可以多次运行代码?
更新1
它不是服务器套接字,所以这里没有监听。 TIME_WAIT
也不起作用:
LingerOption