ZHH- 关于setsockopt(s,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt))的问题
现在碰到一个问题, 就是发现很多socket端口都是CLOSE_WAIT状态,比如:
ema445.3300 ema445.55564 49152 0 49152 0 CLOSE_WAIT
ema445.3300 ema445.55565 49152 0 49152 0 CLOSE_WAIT
ema445.3300 ema445.55566 49152 0 49152 0 CLOSE_WAIT
ema445.3300 ema445.55567 49152 0 49152 0 CLOSE_WAIT
ema445.3300 ema445.55568 49152 0 49152 0 CLOSE_WAIT
ema445.3300 ema445.55569 49152 0 49152 0 CLOSE_WAIT
ema445.3300 ema445.55570 49152 0 49152 0 CLOSE_WAIT
。。。。。。
这样会导致后面的socket不能再进行连接。
这里第一列是服务器端的端口号,第二列是客户端的端口号(如:55564, 这里我想问一下这个端口号不是系统随机产生的?)
上网查了一下,听说使用SO_REUSEADDR应该能解决这样的问题(重用端口号)。但是似乎这个选项在客户端代码中不起作用。
是否我一定需要修改服务器的代码去使用这个选项? SO_REUSEADDR这个选项是不是可以避免重开客户端的端口号(第二列的内容)?
对于服务器的3300这个端口是不起作用的?
有人对此比较了解吗?