indy TCP Server/Client快速检测TCP连接状态(C++Builder)(200分)

  • 主题发起人 主题发起人 wukui
  • 开始时间 开始时间
W

wukui

Unregistered / Unconfirmed
GUEST, unregistred user!
有一种说法:TCP连接建立后,如果一段时间不传数,会断掉。
那么如何保证每次send数据之前TCP连接正常呢?
是不是每次发送前都要检测状态呢?
检测状态会不会带来很大的延迟?
我的程序实时性要求较高。

请详细解释一下,200分送上。
谢谢!
 
TCP建立连接后,只要你的控件没有设置Timeout,那它就不会断开的,每次Send数据,如果TCP连接有问题,Indy自然会raise一个Exception告诉你错误发生了(可能是EIdClosedSocket,也可能是EIdNotConnected或EIdSocketError,要根据情况),只要处理这个错误就可以啦。
 
事实上,如果断了的事件处理一下: Fconnected = False
然后再发送之前进行判断就行了!
 
判断方法:
1、PING
2、KEEPALIVE
3、READ 或 WRITE
 
如果没有disconnect 事件发生,每次发送前判断一下
if athread.connection.connected then
athread.connection.writeln( "aaaa" );
 
代码已发
 
接受答案了.
 
后退
顶部