我正在尝试重新连接到已断开连接的套接字,但是即使由于参数“reuseSocket”设置为true调用Disconnect方法,由于某种原因,它也不允许这样做。

_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_socket.Connect(ipAddress, port);
//...receive data
_socket.Disconnect(true); //reuseSocket = true
//...wait
_socket.Connect(ipAddress, port); //throws an InvalidOperationException:



我究竟做错了什么?

最佳答案

您可以像这样设置套接字选项

_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.DontLinger, True)

如果不起作用,请尝试其他一些选择
_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.DontLinger, false)
_Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, True)
_Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 500)
_Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, Timeout)

关于c# - 如何在.NET中重用套接字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2698999/

10-11 00:27