免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: koolcoy
打印 上一主题 下一主题

[算法] 短时间内大量connect()会出现Cannot assign requested address错误 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
11 [报告]
发表于 2012-11-10 12:32 |只看该作者
NalaGinrut 发表于 2012-11-10 11:48
能否解释下这句话?

另外,“分配一个本地端口号和本地地址“是针对最一开始那个socket吗?


1、FTP如果是PORT方法产生数据通道
连接的发起是服务器,接收连接的是客户端
如果是PASV方法,连接发起是客户端,接收连接是服务器

2、临时连接端口复用
随便啦
比如一开始的连接不bind
然后用getsockaddr获得此连接的本地端口和地址
close()之后以后再连接就复用这个地址和端口
其实TCP的connect()首先要做的就是查找空闲的本地地址+端口组合,然后bind,然后connect
平常都是把sockaddr_t给初始化成0,所以不用显式调用bind()
某些地方的防火墙会限制发起连接的IP地址或是不同的IP地址有不同的连接限制
这时候就要自己去管理连接创建时的本地地址和端口

最简单的方法,不用改程序,多设置几个同网段的IP地址就行了,

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
12 [报告]
发表于 2012-11-10 17:27 |只看该作者
koolcoy 发表于 2012-11-09 18:31
回复 3# NalaGinrut

就是我反复地connect同一个地址,connect后发送完了就关闭。 如果这个操作短时间内 ...

这个问题得用连接池解决,连接在池里是长连接。短使用。
不是简单不简单的问题,必须这么用。

论坛徽章:
0
13 [报告]
发表于 2012-11-20 15:05 |只看该作者
每个连接 给几秒的超时 超时了再断

论坛徽章:
0
14 [报告]
发表于 2012-11-25 20:03 |只看该作者
可以使用消息服务中间件吗?有商业版的,也有开源的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP