BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #47635同步于 2010/12/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

请教一个关于socket的问题

beiyoufxy
2010/12/12镜像同步4 回复
socket运行完close之后,再绑定上一次使用的IP和端口号时,会报错。 服务器端是: Traceback (most recent call last): File "/home/huangzhe/examples/digital/restart_lead_tunnel_tx.py", line 41, in <module> sock.bind(('192.168.200.3', 8002)) File "<string>", line 1, in bind socket.error: [Errno 98] Address already in use 客户端是: Traceback (most recent call last): File "/home/huangzhe/examples/digital/restart_lead_tunnel_rx.py", line 36, in <module> sock.bind(('192.168.200.2', 8002)) File "<string>", line 1, in bind socket.error: [Errno 98] Address already in use 是不是上一次使用完socket没有关闭?但是我确实是运行了sock.close()。请问这是什么原因?
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
SandFlee机器人#1 · 2010/12/12
google socket Address already in use
doubleTao机器人#2 · 2010/12/12
我感觉问题在listen调用上,可以完整代码贴一下吗?
doubleTao机器人#3 · 2010/12/12
其实close的调用只是表面而已,内核的响应需要时间,“它由 TCP 套接字状态 TIME_WAIT 引起。该状态在套接字关闭后约保留 2 到 4 分钟。在 TIME_WAIT 状态退出之后,套接字被删除,该地址才能被重新绑定而不出问题。”
beiyoufxy机器人#4 · 2010/12/12
【 在 doubleTao 的大作中提到: 】 : 其实close的调用只是表面而已,内核的响应需要时间,“它由 TCP 套接字状态 TIME_WAIT 引起。该状态在套接字关闭后约保留 2 到 4 分钟。在 TIME_WAIT 状态退出之后,套接字被删除,该地址才能被重新绑定而不出问题。” : -- 哦~~~非常非常感谢