socket连接成功,关闭后,再连接出错??

cdeveloper 2002-09-30 09:29:53
谁能帮我解决一个问题,socket和远端服务器连接(socket.connect)以后,断开(socket.close),当再连接的时候就出错了,各位有没有碰到这个问题啊! 救救小弟!
...全文
1081 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
gongdath 2002-10-07
  • 打赏
  • 举报
回复
当你CLOSE一个套接口后,内核已经释放了这个套接口的所有资源(假设这个套接口被本进程所独占),所以当你想重新连接时,不能使用原来的套接口描述符,必须重新创建一个.
hjt3328 2002-10-07
  • 打赏
  • 举报
回复
错误代码是什么啊。
你初始化的时候是不是没有初始化socket呀
cai3995 2002-10-07
  • 打赏
  • 举报
回复
没有初始化Socket。
gongdath 2002-10-07
  • 打赏
  • 举报
回复
你在连接前用SOCKET函数再创建一次就可以连接上了.
这个问题在很多书上都提到过.
gongdath 2002-10-07
  • 打赏
  • 举报
回复
我同意这个观点:
问题在于没有重新socket(..),因为close后已经把套接口关闭了
zhnavy 2002-10-01
  • 打赏
  • 举报
回复
我觉得squiffy说的可能是对的,如果不是特殊需要,本地源端口不需要指定,否则当客户端主动关闭进入TIME_WAIT状态后,在这个端口就无法再和远端建立连接了,除非等1、2分钟,TOME
VampireQQ 2002-10-01
  • 打赏
  • 举报
回复
对,客户端的端口一般不需要指定,让系统自动分配就好了,如果指定的话,断开连接后,在2msl的时间内,这个socket pair的状态是处在time_wait,不能使用原来的IP+PORT对,不管是服务器端还是客户端。过了2msl时间后,你就可以使用原来的socket pair了。
netsbull 2002-10-01
  • 打赏
  • 举报
回复
用WSAGetLastError 看看错误码先
squiffy 2002-10-01
  • 打赏
  • 举报
回复
你本地创建socket的时候,是不是指定了固定的端口?本地创建socket的时候,应该使用0,这样每次都变,就不会出现这个情况了。
liunux 2002-09-30
  • 打赏
  • 举报
回复
tcp/ip的连接里,有一个叫重用的属性,你可以把它设置为1,另外,你在close之前,还有,当对方关闭以后,都应该先用shutdown,这样才不会处于time_wait的状态。
bugz 2002-09-30
  • 打赏
  • 举报
回复
close完了后,需要再create一次,如果是api的话,就是重新socket()一次
jyc_nj 2002-09-30
  • 打赏
  • 举报
回复
可能需要等待socket真正的断开.
hohoo 2002-09-30
  • 打赏
  • 举报
回复
服务器循环的调用accept().客户机connect()后,服务器分配socket和客户通信。
myralf 2002-09-30
  • 打赏
  • 举报
回复
能把代码附上吗?
vtable9999 2002-09-30
  • 打赏
  • 举报
回复
你把错误代码打印出来看看就知道是什么原因了。

很可能如sdj(四眼) 所说
sdj 2002-09-30
  • 打赏
  • 举报
回复
问题在于没有重新socket(..),因为close后已经把套接口关闭了
rady88 2002-09-30
  • 打赏
  • 举报
回复
liunux(探索者) 的话有道理,两边都应该调用close,如果只是一边close,另一边还在等待,就不能连接。

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧