我发现默认情况下OS不会立即释放服务器关闭后服务器套接字使用的端口.通过SO_REUSEADDR在设置套接字时给出可以避免这个问题,但我不明白为什么保持端口一段时间是有用的.如果服务器关闭,套接字关闭,传输到该端口的任何数据都不会被处理吗?
当端口被释放时,它进入TIME_WAIT状态以防止在到达第一个连接的路由时被延迟的重复数据包被传递到第二个连接.
以下是没有这种情况的情况TIME_WAIT:
这是一个很好的答案,解释如何处理这个问题.这篇文章解释了如何减轻TIME_WAIT繁忙服务器的影响.