“Address already in use 的现象
下面建立的套接字都是TCP 套接字。
-
server 创建监听套接字
socket1
,绑定一个指定端口,并接受若干连接。在另外一个终端再次运行server ,在bind 出会返回错误“Address already in use ”(即使使用了SO_REUSEADDR) -
server 创建监听套接字,绑定了一个指定端口,并接受了若干连接。杀死server后在重新启动server,程序会在 bind 出返回错误 “Address already in use ”,
这是需要使用在bind 前设置套接字 SO_REUSEADDR属性,才可以避免这种问题。
因为设置了SO_REUSEADDR, 所以重启后的服务器程序可能受到非期望的数据。必须慎用SO_REUSEADDR。