浅谈socket编程心得
我用的是delphi的tserversocket和tclientserver进行的数据传输编程。编程过程中遇到的问题:
1、 服务器怎么判断客户端的状态,好释放相应的变量,内存?
这个问题直到现在我还是不能及时判断出。当客户端正常关闭时。我可以知道,但是当客户端网络断了的话。我就无法判断出。我采用大多数人用到的”心跳“方法。就是每隔几秒种向客户端发送一个确认信息。
i:=tserversocket.socket.sendtext('ddd');
如果i<0就认为客户端断开了。关闭相应的socket。tserversocket有一个属性很有用。connected。在正常情况下可以帮助我们知道客户端是否连接。在加上心跳就可 以全部判断处理了。部分代码。
if session[i].Csocket.Connected =true then
//主要是客户端不正常断开的时候用到
ret:=session[i].Csocket.SendText('卫星实时系统检测客户端连接情况')
else
begin
if assigned(Fclientclose) then
OnWellDisConnect(Self,session[i].Cwell);
end;
end;
if ret<0 then
raise Emiss.create('网络出错');
end;