几点看法:
1、一个服务器端与多个客户端相连。这种情况下,应该使用阻塞(也就是多线程)方式通讯。
2、在有Timer的情况下作断点调试恐怕不成,应该Timer实际上是一个线程。判断是否断线,大可不必使用Timer,仅仅从效率方面来说吧:断线的可能性是很小的,那么你的Timer几乎等于在浪费资源。使用ClientSocket的OnError和ServerSocket的OnClientError就行了。—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
I.Desire := '加不加分随你';
—————————————————————————————————
1、一个服务器端与多个客户端相连。这种情况下,应该使用阻塞(也就是多线程)方式通讯。
2、在有Timer的情况下作断点调试恐怕不成,应该Timer实际上是一个线程。判断是否断线,大可不必使用Timer,仅仅从效率方面来说吧:断线的可能性是很小的,那么你的Timer几乎等于在浪费资源。使用ClientSocket的OnError和ServerSocket的OnClientError就行了。—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
I.Desire := '加不加分随你';
—————————————————————————————————
1、一个服务器端与多个客户端相连。这种情况下,应该使用阻塞(也就是多线程)方式通讯。
2、在有Timer的情况下作断点调试恐怕不成,应该Timer实际上是一个线程。判断是否断线,大可不必使用Timer,仅仅从效率方面来说吧:断线的可能性是很小的,那么你的Timer几乎等于在浪费资源。使用ClientSocket的OnError和ServerSocket的OnClientError就行了。—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
I.Desire := '加不加分随你';
—————————————————————————————————
我将TIMER事件已经屏蔽了,procedure Tmanageform.ServerSocket2ClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
var tmp:variant;
begin try
errorcode:=0;
tmp:=socket.RemoteAddress;
showmessage(tmp+'掉了');
except end;end;
这是这段代码,但是在拔掉网线后根本没反应,不知是为什么,请大家帮个忙看看吧,谢谢了!
OnClientError事件属于TSocketErrorEvent类型