我正在尝试重新连接到已断开连接的套接字,但是即使由于参数“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/