问一个关于TClientSocket的问题!(100分)

  • 主题发起人 主题发起人 qwerters
  • 开始时间 开始时间
Q

qwerters

Unregistered / Unconfirmed
GUEST, unregistred user!
用TClientSocket的Nonblocking方式去连接一个服务器,

如果服务器不能达到或服务器的IP不存在,会报一个"异步socket error"!

怎么解决或获取处理该错误的句柄。

我不想在我的程序里弹出这样一个对话框。
 
这个问题的解决方法是这样:
在FormCreate中加入: SetErrorProc(ErrorProc);
然后定义ErrorProc如下:
procedure ErrorProc(ErrorCode: Integer);
begin
//根据ErrorCode的不同,做不同的处理!
case ErrorCode of
10065: ShowMessage('服务器不能达到或服务器的IP不存在');
...
end;
 
10065一般情况是未检测到应答信号,还需再检测一下对应的端口吗?
 
不行,还是有报“Asynchronous socket error 10061”系统报错对话框。

我不想在我的程序了出现这样的系统报错对话框。
 
你只要在clientsocket的onerror事件中把errorcode返回为0,就ok了。
procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ShowMessage('error');
errorcode:=0;
end;
 
多人接受答案了。
 
后退
顶部