我想我理解该选项的正式含义.在我正在处理的一些遗留代码中,使用了该选项.客户抱怨RST作为对其接近的连接的FIN的回应.
我不确定我是否可以安全地将其删除,因为我不明白何时应该使用它.
能否举例说明何时需要该选项?
从手册页:
SO_REUSEADDR指定在验证提供给bind()的地址时使用的规则应该允许重用本地地址(如果协议支持的话).此选项采用int值.这是一个布尔选项
我应该什么时候使用它?为什么"重用本地地址"给出了?
我对Socket对象上的相关方法的聚宝盆感到有点困惑,该对象可能会关闭并清理套接字连接.考虑以下:
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect("192.168.1.22", 8333);
socket.Send(Encoding.UTF8.GetBytes("hello"));
// now for the closing fun
socket.Shutdown(SocketShutdown.Both);
socket.Disconnect(false);
socket.Close();
socket.Dispose();
Run Code Online (Sandbox Code Playgroud)
另外,这个人说要真正干净地关闭一个连接,必须执行socket.Shutdown(SocketShudown.Send),然后等待另一方做出响应.
什么是关闭,然后清理套接字连接的正确方法?
我有一个问题,我开发了一个客户端和服务器包装器供我个人使用,但不幸的是由于网络编程知识不足,我在客户端连接期间遇到TIME_WAIT问题.我的客户端现在尝试在短时间内与同一主机建立多个连接,我发现主要原因是因为我正在尝试重用套接字并且它进入TIME_WAIT状态因为我正在关闭没有正常关机的连接.我想知道使用.NET套接字关闭连接的正确模式,以防我强烈使用'Async'API,即ConnectAsync,AcceptAsync,SendAsync,ReceiveAsync,DisconnectAsync等功能(DisconnectAsync - 重用套接字)
sockets ×3
c# ×2
networking ×2
setsockopt ×2
.net ×1
ip-address ×1
linux ×1
port ×1
so-linger ×1
tcp ×1