为什么udp套接字关闭后仍然在netstat -a中可见?

来源:百度知道 编辑:UC知道 时间:2024/05/20 09:20:30
WSAStartup(MAKEWORD(2,2), &wsaData);之后
我创建了UDP监听套接字,bind....由于实际需要绑定之后不等接收数据而是延迟一段时间后关闭。
问题是,调用close()关闭这个udp套接字之后,在cmd窗口中用netstat -a命令可以看到它的记录还在?只有当程序结束退出后才消失。
怎样才能彻底释放这个端口?
这个问题我已经找到答案并解决了。可是,诸位的回答也太离谱了……
难道UDP还有“状态”一说吗?

用closesocket()关闭套接字,不要用close()。

所有的连接在网络上都是延迟关闭的,延迟时间会根据端口状态来显示,你用的netstat -a是显示所有连接,也包括那些网络延迟的端口,如果端口是关闭了,则在最后面可以看到CLOSE_ED状态,这个显示是在网络连接关闭以后20内可以看到的连接端口。20秒以后再输入命令,就看不到了。

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!释放端口?是关闭吧,