社区
C++ Builder
帖子详情
TClientSocket连接服务器后工作一段时间后,莫名其妙的出现断开连接的现象?为什么?
flc
2006-04-26 10:31:14
我是采用TClientSocket 的ctNonBlocking的方式连接服务器的。在一天中大概出现20次断开服务器的情况。这是什么原因呢?
...全文
809
26
打赏
收藏
TClientSocket连接服务器后工作一段时间后,莫名其妙的出现断开连接的现象?为什么?
我是采用TClientSocket 的ctNonBlocking的方式连接服务器的。在一天中大概出现20次断开服务器的情况。这是什么原因呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
soloxiao
2006-04-28
打赏
举报
回复
我的经验是使用阻塞式放在线程中处理
while()
{
if(disconnect){tryconnect_server();disconnect=false;continue;}
action....
if(send or read data error)disconnect
}
rudolf_he
2006-04-27
打赏
举报
回复
是这样的我的程序在连接上服务器后,会发送一个长度为70个字符的数据请求,服务器在接到数据请求后,分析请求格式是否是正确;如果正确则发送数据。
程序在一天中至少要发送请求和数据接受500次;一天大概会出现20次中断现象。
照你这么说,你每次处理时间都很短,为什么不在需要的时候再来建立连接,处理完后断开,非要一直占着资源呢?
Atomictry
2006-04-27
打赏
举报
回复
你的程序是在广域网用的吧。我估计是由于你的socket大部分时间一直连着,而又不发包,而被中途的网关给喀嚓掉了。所以你应该让你的客户端程序每一分钟或半分钟发一个TTL包给服务端,服务端只需要把这个包原样发回给该客户端即可。
TTL包格式:随便搞一个,一个命令字都行。
flc
2006-04-27
打赏
举报
回复
客户说要发给我,还没有收到他的邮件!
客户在广州。。。。
Jim@luckeeinc.com
2006-04-27
打赏
举报
回复
后来你去看了日志了吗?
flc
2006-04-27
打赏
举报
回复
不是在广域网用的,是在一家汽车生产公司的局域网内。
在工作时大约每分钟都要进行数据传输,不可能接收后就断开网络。现在每天大约出现断开网络的现象有20次客户就担心影响生产。
flc
2006-04-26
打赏
举报
回复
在程序运行后TimerNet与TimerRead的Enabled都是ture。如果出现如下这种情况会不会断开连接呢?
当FSSocketRead在接收数据时,在TimerNet里用FSSocket->Active && FSSocket->Socket->Connected判断FSSocket的状态。这样会导致FSSocket的断开连接吗?
flc
2006-04-26
打赏
举报
回复
char ReceiveChar[255];
Jim@luckeeinc.com
2006-04-26
打赏
举报
回复
先出去吃饭~~
Jim@luckeeinc.com
2006-04-26
打赏
举报
回复
ReceiveChar是什么?你是二进制数据吗?
flc
2006-04-26
打赏
举报
回复
我发送的数据请求(70)和接收的数据(106)都是固定的格式的
这些都是我们和用户协商好的
rudolf_he
2006-04-26
打赏
举报
回复
看你这段代码:
int flag;
flag=FSSocket->Socket->ReceiveBuf(FSReceive,106);
if(flag==-1)
{
.....
}
if(ReceiveChar[10]=='1') //这里你怎么知道你总共接收到了多少数据?
//有没有考虑粘包的情况?
Jim@luckeeinc.com
2006-04-26
打赏
举报
回复
我对Socket了解不深 也刚刚接触 richard19831123@hotmail.com
网络方面的问问 “来电”
flc
2006-04-26
打赏
举报
回复
Ring_Pt(已是黄昏独自愁) 你好!您能把你的MSN告诉我好吗?谢谢您!在技术上有问题好与您联系。
flc
2006-04-26
打赏
举报
回复
是这样的我的程序在连接上服务器后,会发送一个长度为70个字符的数据请求,服务器在接到数据请求后,分析请求格式是否是正确;如果正确则发送数据。
程序在一天中至少要发送请求和数据接受500次;一天大概会出现20次中断现象。
Jim@luckeeinc.com
2006-04-26
打赏
举报
回复
我刚刚做掉一个RFID无线射频的监控 也是用Socket做的 长时间开着是没出现什么问题
不过如果说ClientSocket连接不上ServerSocket的时候 它会有连接请求在队列里 不会一下子就释放掉 这个要注意点 解决的方法是重连服务器的时间间隔超过默认值(一般30S应该可以了),其他到是没发现什么问题。
flc
2006-04-26
打赏
举报
回复
谢谢 Ring_Pt(已是黄昏独自愁)!
1)我和我们的客户联系一下,要求他把出现网络中断地日志发给我,在分析一下是何原因?
2)大家是不是在用TClientSocket组件的时候也会出现一些不知道原因地错误吗?
flc
2006-04-26
打赏
举报
回复
其实很简单的
TimerNet是检测是否断开的,如果断开自动连接。
TimerRead是发送数据请求的,当数据处理完成后自动发送数据请求。
FSSocketRead是接收数据的,主要错误是在这个过程产生的。
Jim@luckeeinc.com
2006-04-26
打赏
举报
回复
暂时还没看出来是哪里的问题 既然不是服务器断的 那只有看那个ErrorCode了 看代码没看出什么
flc
2006-04-26
打赏
举报
回复
现在程序已经在生产线使用了,不可能在调试。我就是麻烦各位高手看看我的代码是不是有不妥的地方。
加载更多回复(6)
Tcl
ient
Socket
组件
本文详细介绍了
Tcl
ient
Socket
组件的功能和使用方法,包括其作为客户端套接字的主要职责,如建立和管理与
服务器
的
连接
,以及阻塞式和非阻塞式的通讯方式。此外,还列举了组件的重要属性和方法,如ACTIVE、ADDRESS、HOST、PORT、
SOCKET
等,并解释了如何通过这些属性建立和
服务器
的
连接
。
TCl
ient
Socket
控件和Server
Socket
控件
本文详细介绍了Delphi中的
TCl
ient
Socket
和TServer
Socket
控件,用于实现TCP/IP网络通信。
TCl
ient
Socket
用于客户端
连接
,通过属性如Active、Host、Port等设置
连接
参数,并通过Open和Close方法建立和
断开
连接
。TServer
Socket
用于
服务器
端,监听客户端
连接
,具备Active、ServerType、Port等属性,以及OnCl
ient
Connect、OnCl
ient
Disconnect等事件处理网络请求。通过这两个控件,开发者可以轻松创建TCP网络应用程序。
DELPHI下的Winsock编程(一)--从
TCl
ient
Socket
控件出发
本文旨在介绍DELPHI下使用
TCl
ient
Socket
和TServer
Socket
进行Winsock编程的基础知识,通过实例展示如何创建简单的客户端和
服务器
通信程序。强调了解Winsock API的重要性,以避免仅依赖组件而忽视底层原理。
TServer
Socket
和
TCl
ient
Socket
的使用
介绍C++Builder中TServer
Socket
和
TCl
ient
Socket
组件的基本使用方法,包括属性、事件及编程实例。
Delphi
TCl
ient
Socket
组件、Tserver
Socket
组件
本文介绍了Delphi中的
TCl
ient
Socket
和TServer
Socket
组件,详细解析了它们的属性、方法和事件,帮助读者理解如何使用这些组件进行网络编程。
C++ Builder
13,872
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章