免费注册 查看新帖 |

Chinaunix

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

求教IO::Socket::INET 本地端口释放问题,求高手解惑! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-03-17 14:18 |只看该作者
回复 9# 黑色阳光_cu


    我也知道了,一定是bug,^_^o(∩_∩)o...哈哈

论坛徽章:
0
12 [报告]
发表于 2010-03-17 14:19 |只看该作者
高手,太小气了
meihuaqi 发表于 2010-03-17 14:13





发了FIN,会有什么结果?

论坛徽章:
0
13 [报告]
发表于 2010-03-17 14:25 |只看该作者
回复 12# 黑色阳光_cu


    tcp半关闭,客户端不再向服务器写东西了,应该是这样吧,如果连这个都记错了我就不活了

论坛徽章:
0
14 [报告]
发表于 2010-03-17 14:33 |只看该作者
shutdown(1)后,是这个顺序:

FIN_WAIT_2
TIME_WAIT
CLOSED

用了Reuse后,直接关闭是发送RST包吧?

论坛徽章:
0
15 [报告]
发表于 2010-03-17 14:44 |只看该作者
回复 14# 黑色阳光_cu


害我又试了一次,   
用了Reuse后,直接关闭还是发fin,
去掉shutdown(1)后和用不用Reuse没关系,本地端口都能释放。

#########################################################
AN# tcpdump -i em0 host 172.16.63.31
tcpdump: listening on em0
14:32:36.523200 172.16.63.204.callbook > 172.16.63.31.http: S 1548261975:1548261975(0) win 65535 <mss 1460,nop,wscale 3,sackOK,timestamp 1636264264 0> (DF)
14:32:36.523223 172.16.63.31.http > 172.16.63.204.callbook: S 817184642:817184642(0) ack 1548261976 win 17520 <mss 1460> (DF)
14:32:36.523526 172.16.63.204.callbook > 172.16.63.31.http: . ack 1 win 65535 (DF)
14:32:36.523693 172.16.63.204.callbook > 172.16.63.31.http: P 1:67(66) ack 1 win 65535 (DF)
14:32:36.523698 172.16.63.204.callbook > 172.16.63.31.http: F 67:67(0) ack 1 win 65535 (DF)       <-------fin
14:32:36.523772 172.16.63.31.http > 172.16.63.204.callbook: . ack 68 win 17519
14:32:36.525957 172.16.63.31.http > 172.16.63.204.callbook: P 1:256(255) ack 68 win 17519
14:32:36.525978 172.16.63.31.http > 172.16.63.204.callbook: F 256:256(0) ack 68 win 17519
14:32:36.526193 172.16.63.204.callbook > 172.16.63.31.http: . ack 257 win 65444 (DF)
^C
110 packets received by filter
0 packets dropped by kernel
AN# tcpdump -i em0 host 172.16.63.31
tcpdump: listening on em0
14:37:34.030999 172.16.63.204.dc > 172.16.63.31.http: S 2259249956:2259249956(0) win 65535 <mss 1460,nop,wscale 3,sackOK,timestamp 1636561712 0> (DF)
14:37:34.031023 172.16.63.31.http > 172.16.63.204.dc: S 1048807345:1048807345(0) ack 2259249957 win 17520 <mss 1460> (DF)
14:37:34.031159 172.16.63.204.dc > 172.16.63.31.http: . ack 1 win 65535 (DF)
14:37:34.031492 172.16.63.204.dc > 172.16.63.31.http: P 1:67(66) ack 1 win 65535 (DF)
14:37:34.033591 172.16.63.31.http > 172.16.63.204.dc: P 1:256(255) ack 67 win 17520
14:37:34.033612 172.16.63.31.http > 172.16.63.204.dc: F 256:256(0) ack 67 win 17520               <---fin
14:37:34.033992 172.16.63.204.dc > 172.16.63.31.http: . ack 257 win 65445 (DF)
14:37:34.035832 172.16.63.204.dc > 172.16.63.31.http: F 67:67(0) ack 257 win 65535 (DF)
14:37:34.035852 172.16.63.31.http > 172.16.63.204.dc: . ack 68 win 17519

论坛徽章:
0
16 [报告]
发表于 2010-03-17 15:26 |只看该作者


是LINGER才会让close直接发RST 记错了

论坛徽章:
0
17 [报告]
发表于 2010-03-17 15:51 |只看该作者
本帖最后由 黑色阳光_cu 于 2010-03-17 16:15 编辑

我自己的程序用了SO_LINGER,关闭时会直接发RST。但在close之前用了shutdown(2)就会引起正常关闭,导致大量的TIME_WAIT链接。你的问题,猜测是shutdown让套接字进入了什么状态,导致端口重用不了。

“SO_REUSEADDR用于对TCP套接字处于TIME_WAIT状态下的socket,才可以重复绑定使用。 ”


windows xp sp3
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP