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