当我在同一端口中第二次执行使用bind()的程序时,将获得EADDRINUSE。
我不想实现setsockopt()来重用套接字。我想在执行程序之前“清除”已使用端口中的已使用套接字。
详细信息:Linux OS。
最佳答案
我会说您没有正确清理套接字,因此,内核将等待其他数据到达(TIME_WAIT)并将其丢弃(RST)。如果成功完成此操作,您将可以在之后立即重用该端口,而无需通过setsockopt
“强制”该端口。
因此,除了通过setsockopt
之外,这是不可能的,因为您需要明确告知内核必须停止这种行为。