最近在学Linux 网络编程,调试TCP并发服务器时遇到一个问题,当我连接上一个或多个客户端后,用 CTRL+C 关闭进程后,重新打开进程就发生错误了:bind fail:Address already in use
地址被占用???
开始我以为是套接字描述符未关闭,添加代码在发生错误时关闭掉套接字描述符还是不行。
上网查了才发现是原来是套接字状态未配置,IBM官网上有较为详细的解释:Linux 套接字编程中的 5 个隐患
下面截取文中一段相关内容:
隐患 3.地址使用错误(EADDRINUSE)
您可以使用 bind
API 函数来绑定一个地址(一个接口和一个端口)到一个套接字端点。可以在服务器设置中使用这个函数,以便限制可能有连接到来的接口。也可以在客户端设置中使用这个函数,以便限制应当供出去的连接所使用的接口。bind
最常见的用法是关联端口号和服务器&