社区
C++ Builder
帖子详情
TClientSocket连接服务器后工作一段时间后,莫名其妙的出现断开连接的现象?为什么?
flc
2006-04-26 10:31:14
我是采用TClientSocket 的ctNonBlocking的方式连接服务器的。在一天中大概出现20次断开服务器的情况。这是什么原因呢?
...全文
754
26
打赏
收藏
TClientSocket连接服务器后工作一段时间后,莫名其妙的出现断开连接的现象?为什么?
我是采用TClientSocket 的ctNonBlocking的方式连接服务器的。在一天中大概出现20次断开服务器的情况。这是什么原因呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)
DELPHI下的SOCK编程(转)
DELPHI下的SOCK编程 本文是写给公司新来的程序员的,算是一点培训的教材。本文不会涉及太多的编程细节,只是简单讲解在DELPHI下进行Winsock编程最好了解的知识。 题外话:我认为学习编程就如同学习外语一样,最好的方式是你先学会如何去运用它,然后才是了解它的语言特性、语法之类的东西。不过很可惜,我们以前的外语教育使用了相反的过程。软件编程也是一样,在很多人的大学阶段,你更多
Delphi 下的
socket
通讯(转自http://www.cnblogs.com/devcjq/articles/2325600.html)
本文是写给公司新来的程序员的,算是一点培训的教材。本文不会涉及太多的编程细节,只是简单讲解在DELPHI下进行Winsock编程最好了解的知识。 题外话:我认为学习编程就如同学习外语一样,最好的方式是你先学会如何去运用它,然后才是了解它的语言特性、语法之类的东西。不过很可惜,我们以前的外语教育使用了相反的过程。软件编程也是一样,在很多人的大学阶 段,你更多的是学习那些理论知识,学习...
DELPHI下的
Socket
编程
DELPHI下的
Socket
编程(转自http://www.cnblogs.com/devcjq/articles/2325600.html) 本文是写给公司新来的程序员的,算是一点培训的教材。本文不会涉及太多的编程细节,只是简单讲解在DELPHI下进行Winsock编程最好了解的知识。 题外话:我认为学习编程就如同学习外语一样,最好的方式是你先学会如何去运用它...
DELPHI下的SOCK编程
DELPHI下的SOCK编程 本文是写给公司新来的程序员的,算是一点培训的教材。本文不会涉及太多的编程细节,只是简单讲解在DELPHI下进行Winsock编程最好了解的知识。 题外话:我认为学习编程就如同学习外语一样,最好的方式是你先学会如何去运用它,然后才是了解它的语言特性、语法之类的东西。不过很可惜,我们以前的外语教育使用了相反的过程。软件编程也是一样...
基于利益相关者理论的网络游戏企业社会责任研究.docx
基于利益相关者理论的网络游戏企业社会责任研究.docx
C++ Builder
13,870
社区成员
102,693
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章