目录
SO_REUSEADDR/SO_REUSEPORT到底什么意思?
SO_REUSEADDR/SO_REUSEPORT到底什么意思?
SO_REUSEADDR选项有如下语义:
这个套接字选项通知内核,如果端口忙,但TCP状态位于 TIME_WAIT(Linux下的TIME_WAIT大概是2分钟) ,可以重用端口。如果端口忙,而TCP状态位于其他状态,重用端口时依旧得到一个错误信息,指明"地址已经使用中"。如果你的服务程序停止后想立即重启,而新套接字依旧使用同一端口,此时SO_REUSEADDR 选项非常有用。
SO_REUSEPORT选项有如下语义:
此选项允许完全重复捆绑,但仅在想捆绑相同IP地址和端口的套接口都指定了此套接口选项才行,Windows 系统没有 SO_REUSEPORT 选项,如果被捆绑的IP地址是一个多播地址,则SO_REUSEADDR和SO_REUSEPORT等效。
设置SO_REUSEADDR选项
(1)使用通常的socket函数创建一个监听套接口
(2)调用setsockopt函数设置SO_REUSEADDR为TRUE