【发布时间】:2011-06-26 03:37:55
【问题描述】:
我有一个侦听端口的小型 TCP 服务器。在调试时,我通常会按 CTRL-C 来终止服务器进程。
在 Windows 上,我可以快速重启服务,并且可以重新启动套接字。在 Linux 上,我必须等待几分钟才能 bind() 成功返回
当 bind() 失败时,它返回 errno=98, address in use.
我想更好地了解实现中的差异。 Windows 确实对开发人员更友好,但我有点怀疑 Linux 是否在做“错误的事情”。
我最好的猜测是,Linux 会等到所有可能的客户端都检测到旧套接字已损坏,然后才允许创建新套接字。它可以做到这一点的唯一方法是等待它们超时
有没有办法在 Linux 开发过程中改变这种行为?我希望复制 Windows 这样做的方式
【问题讨论】:
标签: windows linux tcp berkeley-sockets