免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4093 | 回复: 7
打印 上一主题 下一主题

[C] 求助!!soket编程 Bind: Address Already in Use [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-01 16:08 |只看该作者 |倒序浏览
我的应用程序中用到TCP连接,在一次连接退出后,需要再次建立链接,第一次连接没有问题,可是再次链接时,bind()报错“地址已在使用当中”在网上查了一些资料,说是可以使用SO_REUSEADDR来重用端口,可是
我设置SO_REUSEADDR不起作用呀。

int flag = 1;
setsockopt(socket, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(flag));


如果不用这个设置,当我再次链接时,bind()返回:“Address already in use”

如果用了这个设置,当我再次链接时,bind没有问题了,但connect()返回:“Cannot assign requested address”,还是不能建立呀??这是什么原因呀,要怎么弄呢?

论坛徽章:
0
2 [报告]
发表于 2010-04-01 16:23 |只看该作者
传说中的TIME_WAIT ?
setsockopt好像有个参数可以设置TIME_WAIT

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
3 [报告]
发表于 2010-04-01 16:51 |只看该作者
你写的是客户端去connect的吧,为什么要去调用bind呢

论坛徽章:
0
4 [报告]
发表于 2010-04-01 17:08 |只看该作者
你原来bind的socket关闭了吗?

论坛徽章:
0
5 [报告]
发表于 2010-04-01 17:35 |只看该作者
先netstat看下端口有没被占用

论坛徽章:
0
6 [报告]
发表于 2010-04-01 17:43 |只看该作者
{:3_190:}

论坛徽章:
0
7 [报告]
发表于 2010-04-02 11:26 |只看该作者
用netstat看了,端口情况是time_wait

论坛徽章:
0
8 [报告]
发表于 2010-04-02 11:38 |只看该作者
进程退出后,所占用端口不会被系统立即释放。我想你的情况也一样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP