导致出现很多相同端口的UDP套接字的原因有两点:
1)在reload的时候,调用shutdown()而不是close()来关闭UDP套接字。shutdown()是用来关闭连接
的
,但是文件描述符还是会存在。UDP协议并没有提供shutdown接口(参见
udp_prot),所以调用shutdown()并没有真的关闭套
接字,而且reload的次数
太多
。
2)设置了SO_REUSEADDR选项。如果没有设置这个选项,在bind的时候就会报错,漏关或者使用shutdown()关闭的错误就很容易发现。UDP套接字没有TIME_WAIT状态,而且要使用的UDP套接字数量不多,所以没有必要设置该选项。