【发布时间】:2017-05-31 02:05:25
【问题描述】:
我在一个 java 客户端库中遇到了这句话:
socket.setReuseAddress(true);
认为这是用来提高性能的,
因为SO_REUSEADDR选项可以表示socket可以强制
使用 TIME_WAIT 端口,即使它属于另一个套接字。
但我也发现这个选项主要用于服务器端, 使服务器能够快速重启,而不是等待 TIME_WAIT 套接字关闭。
我的问题是这个选项对客户端有用吗? 喜欢这个客户端库吗?这会不会对另一个套接字造成伤害,比如一些攻击?
非常感谢!
-迪米
【问题讨论】:
-
它通常在客户端不使用,但有一种情况是 - 通过 NAT 进行 TCP 打孔,这需要将多个套接字绑定到相同的本地IP/端口,所以他们必须使用
SO_REUSEADDR/SO_REUSEPORT。 -
非常感谢。我想知道是否有任何经验表明通过设置此选项对(客户端)性能有很大帮助?