c#fixed tcp client本地端点端口导致SocketException

时间:2018-05-30 10:15:11

标签: c# sockets tcp endpoint

我可以从本地端点取消绑定套接字吗?出于安全考虑,我需要修复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

0 个答案:

没有答案