procedure TService1.ServerSocket1ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin //与客户端连接错误即时断开-->大多数是网络故障引起的:如强行结束任务(client程序).网络异常断开等等 if ErrorCode<>0 then ServerSocket1ClientDisconnect(sender,socket); ErrorCode:=0; end;
ServerSocket1.Socket.Connections[n].Connected
你的方法我试过了,还是不行,你的只能对正常断开的连接起作用,对于异常的断开还是不行,例如网络问题或者是非法关机,他的连接还是存在,是一个死连接来的!
ServerSocket没有此TimeOut此属性.对于此属性你能说的明白些吗?
请教....
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin //与客户端连接错误即时断开-->大多数是网络故障引起的:如强行结束任务(client程序).网络异常断开等等
if ErrorCode<>0 then ServerSocket1ClientDisconnect(sender,socket);
ErrorCode:=0;
end;
假如客户机突然网络异常断开(断电、网线断了之类)的时候,服务器端根本就不会触发ServerSocket1ClientError这个事件的。
请教中
请各位网络编程的高手帮忙。。在线等待,急
异常断开不会触发服务端的任何事件。判断连接状态-
服务端:定义一个state保存客户端状态,需要两个Timer一个timer1间隔短的设置客户端连接为断开;一个timer2间隔长的判断状态state;(注意保持两个timer的同步;即每当timer2触发时timer1重新启动)
客户端:定时(这个时间一般比较短)向服务端发消息,服务端收到设state为连接