linux bind: Address already in use(Z)
来源:互联网 发布:数组排序jquery 编辑:程序博客网 时间:2024/05/01 02:22
虽然用Ctrl+C强制结束了进程,但错误依然存在,用netstat -an |grep 5120和ps aux |grep 5120都还能看到刚才用Ctrl+C“强制结束”了的进程,端口还是使用中,只好每次用kill结束进程。
bind 普遍遭遇的问题是试图绑定一个已经在使用的端口。该陷阱是也许没有活动的套接字存在,但仍然禁止绑定端口(bind 返回 EADDRINUSE),它由 TCP 套接字状态 TIME_WAIT 引起。该状态在套接字关闭后约保留 2 到 4 分钟。在 TIME_WAIT 状态退出之后,套接字被删除,该地址才能被重新绑定而不出问题。
等待 TIME_WAIT 结束可能是令人恼火的一件事,特别是如果您正在开发一个套接字服务器,就需要停止服务器来做一些改动,然后重启。幸运的是,有方法可以避开 TIME_WAIT 状态。可以给套接字应用 SO_REUSEADDR 套接字选项,以便端口可以马上重用。
使用 SO_REUSEADDR 套接字选项避免地址使用错误
int sock, ret, on;
struct sockaddr_in servaddr;
/* Create a new stream (TCP) socket */
sock = socket( AF_INET, SOCK_STREAM, 0 ):
/* Enable address reuse */
on = 1;
ret = setsockopt( sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on) );
/* Allow connections to port 8080 from any available interface */
memset( &servaddr, 0, sizeof(servaddr) );
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl( INADDR_ANY );
servaddr.sin_port = htons( 45000 );
/* Bind to the address (interface/port) */
ret = bind( sock, (struct sockaddr *)&servaddr, sizeof(servaddr) );
在应用了 SO_REUSEADDR 选项之后,bind API 函数将允许地址的立即重用。
参考:http://www.ibm.com/developerworks/cn/linux/l-sockpit/
http://hi.baidu.com/zhjixi495/item/4fd113c5d4931a7ecfd4f86d
0 0
- linux bind: Address already in use(Z)
- linux bind: Address already in use(Z)
- linux bind: Address already in use
- linux bind error: address already in use
- Bind: Address Already in Use
- Bind: Address Already in Use
- bind: Address already in use
- Linux下Bind error: Address already in use处理
- Linux下Bind error: Address already in use处理
- Linux下报 bind error: Address already in use 解决方案
- linux bind()遇到Address already in use问题
- linux socket通信bind error:Address already in use
- bind出现Address already in use解决方法
- bind出现Address already in use解决方法
- bind出现Address already in use解决方法
- 问题解决-Address already in use: bind
- bind: Address already in use 错误追踪
- dubbo Address already in use: bind 解决方案
- javascript变量和函数的加载顺序
- POJ Supermarket
- cuda学习笔记之异步并行执行
- 借助SAP HANA实现文本分析和文本挖掘
- gethibernatetemplate的find方法大全
- linux bind: Address already in use(Z)
- Spring中的WebAppRootListener
- php中如何获取文本文件并删除最后一个字符。
- Hibernate三种状态;query查询;ResultTransformer转换为pojo对象;可以将query语句写在xml中;Criteria查询;ProjectionList总和/f分组等函数
- 正则表达式
- struts2中的文件上传与下载
- Linux 命令(常用)(1.6.1)
- Extjs4--简单的Grid表格
- COJ - 1005 - Rent your Airplane and make Money 题解