如何 拦截delphi socket异常 ( 积分: 50 )

  • 主题发起人 主题发起人 hansland
  • 开始时间 开始时间
H

hansland

Unregistered / Unconfirmed
GUEST, unregistred user!
大侠:
我的idudpserver在给IP为192.168.*.* 以外的客户端发送报文时,会弹出10065 socket error,can't reach host 类型错误,请问如何拦截 这种异常,请给出详细回复,多谢!
 
大侠:
我的idudpserver在给IP为192.168.*.* 以外的客户端发送报文时,会弹出10065 socket error,can't reach host 类型错误,请问如何拦截 这种异常,请给出详细回复,多谢!
 
好像使用try....except...end;就可以实现阿,你在发送语句中,外包裹一层:
try
<发送控制>
except
<出错控制>
end;
即可,不知道你的要求就是这样?
 
这样处理不行,socket error 10065 还是会出现
 
在你的主窗口里放一个ApplicationEvents控件,(别说不知道在那里,这是DELPHI自带的),然后在它的OnException事件里写上
var
ss:string;
begin
ss:=e.Message;
exit;
end;
这样程序里所有的错误都不会显示了。
 
大侠:
我希望可以对指定的异常类型进行拦截,而不是不显示所有错误。
我用了这个控件,但不知道如何对10065 异常进行拦截。
比如在
OnException事件里写上
var ErrorCode: Integer
begin
if ErrorCode=10065 then
begin
application.messagebox('网络设置错误','提示');
Application.ShowMainForm :=False;
end;
end;
这里的ErrorCode 不知道如何定义,请给予指点,非常感谢!
 
procedure TfrmMain.Test(IdUDPClient: TIdUDPClient);
var
counter: integer;
s, peer: string;
port: integer;
begin
counter := 0;
try
inc(counter);
IdUDPClient.Send(Format('test #%d', [counter]));
repeat
try
s := IdUDPClient.ReceiveString(peer, port);
except
on E: EIdSocketError do
if E.LastError <> 10040 then
raise;
end;
if s <> '' then
ShowMessage(Format('%s:%d said'#13'%s', [peer, port, s]));
until s = '';
finally
end;
end;
 
程序调试提示 EIdSocketError 没有定义,如何处理?
 
多人接受答案了。
 
后退
顶部