EIdClosedSocket with message 'Disconnected'
使用IdCmdTCPServer控件
因为没法检测非正常断线
因此自己做了个心跳,用timer去发送和检测
在检测心跳超时的时候,执行
TIdContext *ctx = xxx...;
//....
ctx->Binding()->CloseSocket();
ctx->Connection->Disconnect();
然后过了一阵就触发了EIdClosedSocket with message 'Disconnected'这个错误
估计是IdCmdTCPServer的工作线程在等待接收的期间被我关掉了socket触发了异常
而且在上面那段代码也try catch不到这个异常
请问有什么办法可以断开不触发异常?
[解决办法]
没看明白,先UP再说
[解决办法]
TCP啊?端口有没有绑定啊?
[解决办法]
IdTCPServer這個控件的效果似乎不怎麽樣,不過在出異常的時候還是可以用try catch來抓exception的
你用的IdCmdServer就不大清楚了,不過應該是一樣的
你看看是不是在調試狀態下跑的,如果是,直接跑exe看看
另外看看IdCmdServer有沒有類似其他error參數,像ServerSocket和ClientSocket的OnError事件裏面有個ErrorCode把那個設置成0也可以屏蔽異常
[解决办法]
你的心跳线程里面是不是让线程睡觉了,如果有就很可能在那里出问题,因为线程睡觉是不会相应其他操作的