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