如何解决程序退出重启后不能绑定端口的问题?
2014-01-21 12:32
381 查看
发现问题:
在Linux系统中,如果一个socket绑定了某个端口,该socket正常关闭或程序退出后,在一段时间内该端口依然保持被绑定的状态,其他程序(或者重新启动的原程序)无法绑定该端口。
解决方案:
可以在获得socket描述符之后通过调用setsockopt语句避免该问题:
int sockfd;
int opt = 1;
int len = sizeof(opt);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &opt, len);
在Linux系统中,如果一个socket绑定了某个端口,该socket正常关闭或程序退出后,在一段时间内该端口依然保持被绑定的状态,其他程序(或者重新启动的原程序)无法绑定该端口。
解决方案:
可以在获得socket描述符之后通过调用setsockopt语句避免该问题:
int sockfd;
int opt = 1;
int len = sizeof(opt);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &opt, len);
相关文章推荐
- 如何解决程序退出重启后不能绑定端口的问题?
- 如何解决程序退出重起后不能绑定端口的问题?
- 多线程 DLL 回调函数问题,当应用程序退出时,有些操作并未完成,造成程序内存泄露,如何解决呢
- Win7如何手动注册DLL文件以解决程序不能使用的问题
- Win7如何提升为管理员权限,如何开机启动需要管理员权限的程序,解决win7开机不能自动运行的问题等
- Dr. Com 用户认证程序 "其它程序占用控制端口, 请退出重新再试!(1)" 问题的一种解决方法
- 问题解决——程序不能完全退出
- 如何使用 BindingSource 绑定 ListBox,同时解决绑定 List<T> 后修改数据源不能同时刷新界面显示的问题
- 问题解决——程序不能完全退出
- 一个解决adb5037端口被绑定问题的小程序-以管理员身份运行
- 如何解决Datastage端口不能释放的问题
- 如何解决VB6程序在Win7不能运行的问题~
- Win7如何提升为管理员权限,如何开机启动需要管理员权限的程序,解决win7开机不能自动运行的问题等
- Linux下tomcat作为守护进程运行(开机启动、以指定的用户运行、解决非root身份不能绑定1024以下端口的问题)的配置方法
- Win7如何提升为管理员权限,如何开机启动需要管理员权限的程序,解决win7开机不能自动运行的问题等
- 如何解决编程中Excel不能读取的问题
- 如何解决eclipse中“不能跳转” 和 “找不到定义”的问题
- [C#.net]如何解决安装系统全局钩子程序调试时失败的问题
- 解决在vc调试代码结束时候,不能把控制台黑屏目退出的问题