我曾经认为使用SocketOptionName.ReuseAddress
,我可以重用TIME_WAIT
状态的端口。但我试着试验它,似乎没有效果。
如果我使用netstat
检查套接字,并且它显示套接字处于TIME_WAIT
状态,并且我立即再次运行客户端,则会出现异常:
通常只允许使用每个套接字地址(协议/网络地址/端口)172.16.16.16:12345
我无法做出任何改变。请问你能详细说明SocketOptionName.ReuseAddress的用途吗?
答案 0 :(得分:0)
为什么首先绑定客户端端口?您可能不需要,如果不这样做,那么允许操作系统为您选择一个短暂的端口会更好,然后您就不会遇到这个问题。
其次,为什么你认为重用一个TIME_WAIT
的套接字是个好主意;国家存在是有正当理由的......
至于为什么它不适合你,请查看我在回答这个类似问题时发布的链接:When binding a client TCP socket to a specific local port with Winsock, SO_REUSEADDR does not have any effect