当前位置:  开发笔记 > 小程序 > 正文

在进程退出时释放绑定端口

如何解决《在进程退出时释放绑定端口》经验,为你挑选了1个好方法。

如何确保在进程退出时正确释放绑定到端口的套接字,以便可以在bind()不使用EADDRINUSE的情况下重用端口?我写了一个小程序,它只是创建一个套接字,将它绑定到一个固定的端口,等待连接,然后立即终止.当我重新运行程序时,bind()调用因EADDRINUSE而失败,但如果我等了几分钟,它就会成功.

有没有办法可以明确地"取消绑定"套接字,从而释放端口号?



1> Ivo Bosticky..:

使用SO_REUSEADDR套接字选项将允许您立即重新启动程序.

int iSetOption = 1;
...
sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
setsockopt(_sockfd, SOL_SOCKET, SO_REUSEADDR, (char*)&iSetOption,
        sizeof(iSetOption))
...         


但请注意,从技术上讲,使用SO_REUSEADDR违反了TCP/IP协议,使得绑定该端口的下一个程序可以(尽管不太可能)获取用于原始程序的数据包.
推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有