社区
通信技术
帖子详情
socket连接成功,关闭后,再连接出错??
cdeveloper
2002-09-30 09:29:53
谁能帮我解决一个问题,socket和远端服务器连接(socket.connect)以后,断开(socket.close),当再连接的时候就出错了,各位有没有碰到这个问题啊! 救救小弟!
...全文
2221
17
打赏
收藏
socket连接成功,关闭后,再连接出错??
谁能帮我解决一个问题,socket和远端服务器连接(socket.connect)以后,断开(socket.close),当再连接的时候就出错了,各位有没有碰到这个问题啊! 救救小弟!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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,另一边还在等待,就不能连接。
socket
连接
成功
,
关闭
后,再
连接
出错
解决方案
一般情况下,当服务端先于客户端
关闭
时,由于操作系统释放端口需要一定的时间,端口号可能还未来得及完全释放,这便会导致下次运行程序时出现报错情况。在某些特定情形下,尤其是在
连接
刚刚
关闭
后便立即尝试重新进行
连接
操作时,端口极有可能仍被标识为处于 TIME_WAIT 状态,而这种状态通常会出现在主动
关闭
连接
的一方。一、每次
关闭
时先
关闭
客户端,再
关闭
服务端。然后根据得到的进程号(PID)杀死进程。
socket
连接
错误及原因
Socket
错误指的是在使用
Socket
进行网络通信时,由于各种原因而导致的错误。
Socket
是一种网络编程接口,它允许应用程序通过 TCP/IP 协议或 UDP 协议进行网络通信。在进行网络通信时,可能会出现各种各样的错误,例如
连接
超时、
连接
被重置、无法
连接
等等,这些错误都被称为
Socket
错误。当出现
Socket
错误时,通常需要根据具体的错误信息进行调试和处理,例如修改网络配置、增加
连接
超时时间、检查网络
连接
等等。正确地处理
Socket
错误可以有效提高网络通信的稳定性和可靠性。
Socket
连接
出错
总结
下面7种情况是我认为最容易出现的TCP/IP
连接
错误。 [1] kill pid/应用崩溃/正常关机 这几种情况下操作系统会正常将
连接
关闭
,主动发送FIN完成4次分组交换 [2] 操作系统崩溃/机器断电 两种情况 1 如本端不再启动则不会有任何响应到对端,对端会执行[6]的超时重传重过程 2 如果机器后来又启动了,则会在对端写时返回RST
socket
连接
建立与
关闭
close函数 定义 close函数可以用于
关闭
套接字,并中只能TCP
连接
。 #include<unistd.h> int close(int sockfd); close一个TCP套接字的默认行为是把该套接字标记为已
关闭
,然后立即返回到调用进程。该套接字不能再由调用进程使用,也就是说它不能再作为read或write等函数的第一个参数。 套接字发送缓冲区的数据将尝试被发送到对端,发...
Qt5 C++ Tcp
Socket
如何判断是服务主动断开tcp
socket
连接
?
在 Qt 5.9.9 的 C++ 开发中,使用QTcp
Socket
时,要判断是服务端主动断开 TCP
Socket
连接
,可以通过处理QTcp
Socket
的信号,结合QTcp
Socket
的状态以及相关事件信息来综合判断。
通信技术
4,390
社区成员
28,906
社区内容
发帖
与我相关
我的任务
通信技术
通信技术相关讨论
复制链接
扫一扫
分享
社区描述
通信技术相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章