CLIENTSOCKET在SERVER断电时出现致命错误! |
尚未結案
|
jackalan168
一般會員 發表:6 回覆:12 積分:8 註冊:2004-01-02 發送簡訊給我 |
下面的程式已经做了错误处理,但SERVER突然断电还是会让CLIENT发生错误,
是否程式还有哪里没有处理到。请指教! procedure TFrmClient.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Viewinfos('[信息] 已经成功连接到服务器[' + IpAddress +']');
tryconnect.Enabled := false;
end; procedure TFrmClient.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
try
closesocket(ClientSocket1.socket.sockethandle);
case ErrorEvent of
eeConnect :
begin
Socket.Close;
end;
eeDisconnect:
begin
Socket.Close;
end;
end;
Viewinfos('[信息] 连接服务器失败系统将在5秒后再次尝试连接...');
ErrorCode := 0;
tryconnect.Enabled := true;
except
Viewinfos('[信息] 连接服务器失败系统将在5秒后再次尝试连接...');
ErrorCode := 0;
if not tryconnect.Enabled then
begin
tryconnect.Enabled := true;
end;
end;
end; procedure TFrmClient.ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Viewinfos('[信息] 已经断开与服务器[' + IpAddress + ']的连接');
tryconnect.Enabled := true;
end; procedure TFrmClient.FormClose(Sender: TObject; var Action: TCloseAction);
begin
tryconnect.Enabled := false;
ClientSocket1.Close;
Application.OnException := nil;
end; procedure TFrmClient.TryConnectTimer(Sender: TObject);
begin
try
Clientsocket1.Close;
ClientSocket1.Open;
ClientSocket1.Socket.Lock;
except
//
end;
end; procedure TFrmClient.AppException(Sender: TObject; E: Exception);
begin
try
tryconnect.Enabled := false;
clientsocket1.Active := false;
ClientSocket1.Close;
tryconnect.Enabled := true;
Finally
viewinfos('[信息] 有错误发生但已经被处理,一切运行正常...');
if not tryconnect.Enabled then
begin
tryconnect.Enabled := true;
end;
end;
end; procedure TFrmClient.FormCreate(Sender: TObject);
begin
Application.OnException := AppException;
end; 發表人 -
|
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |