当TClientSocket与TServerSocket连接成功,这时从server不断的发数据给client,主动把client关闭,这时会出现这样一个错误提示"First chance exception at $77E53887 . Exception class ESocketError with message 'Windows socket error: 在一个非套接字上尝试了一个操作。 (10038), on API 'closesocket''. Process SmartLogger.exe ($680)",有时候会把server端程序搞死了,会自动关闭,我已经处理了错误事件,好象有些错误事件在程序中捕获不到?
procedure TCustomerData.ClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
var
strError: String;
begin
ErrorCode := 0;
end;请高手指教,谢谢,在线等
procedure TCustomerData.ClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
var
strError: String;
begin
ErrorCode := 0;
end;请高手指教,谢谢,在线等
1.client连接成功server,
2.client向server发送在线消息
3.server发送数据给client;
4.回至第2步这种方式,以client为主动,server不必去主动连接client,可减轻server的压力;方式B:
1.client连接成功server,发送在线消息
2.server检查client是否在线,若在线发送数据给client;若不在线转入第6步
3.client 成功收到,返回一个收到数据的消息让server确认
4.server接收确定消息,收不到转6
5.回到2
6.client已关闭,不再发送,退出;这种方式,以server为主,主要去检测client的状态,楼主所说的异常没有处理到,,我认为楼主可以将发送数据的代码放入一个try语句中
(在delphi源代码中procedure TCustomWinSocket.Disconnect(Socket: TSocket);的一条语句);
这时服务器数据发送也出现了异常也调用了
CheckSocketResult(closesocket(FSocket), 'closesocket');语句后就出现程序自动关闭
http://www.2ccc.com/article.asp?articleid=3661
或者这个http://www.delphifans.com/SoftView/SoftView_2256.html
或者干脆去找一个完整的企业版,也才100多M,