这两天想搭建一个c2c服务器的模型,一开始是想用C写,结果C的各种细节写的人太烦躁了,就换成了python,原来n百行的代码瞬间变成了几十行,世界一下子就清净了~这是后话,此文主要是记录一下端口重用的问题。
为什么要用端口重用
之前写socket经常在调试时候,每次重启服务端都会在bind时候报错 :[端口被占用] ,这是因为bind试图绑定一个已经在使用的端口。而这个端口被占用的原因是上次退出之后内核对该端口会保存一段时间。
【bind 普遍遭遇的问题是试图绑定一个已经在使用的端口。该隐患是也许没有活动的套接字存在,但仍然禁止绑定端口(bind 返回 EADDRINUSE),
它由 TCP 套接字状态 TIME_WAIT 引起。该状态在套接字关闭后约保留 2个MSL时长(RFC793定义了MSL为2分钟,Linux设置成了30s)。在 TIME_WAIT 状态退出之后,套接字被删除,该地址