当我在同一端口中第二次执行使用bind()的程序时,将获得EADDRINUSE。

我不想实现setsockopt()来重用套接字。我想在执行程序之前“清除”已使用端口中的已使用套接字。

详细信息:Linux OS。

最佳答案

我会说您没有正确清理套接字,因此,内核将等待其他数据到达(TIME_WAIT)并将其丢弃(RST)。如果成功完成此操作,您将可以在之后立即重用该端口,而无需通过setsockopt“强制”该端口。

因此,除了通过setsockopt之外,这是不可能的,因为您需要明确告知内核必须停止这种行为。

09-26 03:16