我正在测试我编写的包装Linux套接字API的Socket类 .

在测试功能中,我执行以下操作:

  • 创建服务器套接字

  • bind / listen

  • 从新套接字连接

  • 接受新套接字

  • 用recv和send发送它们之间的一些数据 .
    双方

  • 呼叫关闭(SHUT_WR)

  • 双方调用recv,并获得0返回值

  • 在所有三个套接字上调用close

然后我再次重复这8个步骤 .

我在步骤的第二次迭代中间歇性地发现 bind 得到了EADDRINUSE .

我的印象是,有可能以这样的方式执行有序关闭,这是可以避免的 . 我知道 SO_REUSEADDR - 但是有可能进行有序关机并阻塞直到端口再次可用吗?