当我运行我的程序(在调试器/IDE之外)时,我收到错误异步套接字错误10049,我不应该收到消息对话:''错误''吗?在下面查看我的代码
begin
try
ClientSocket1.open;
except
showmessage('error');
end;
end;
我究竟做错了什么?
当我运行我的程序(在调试器/IDE之外)时,我收到错误异步套接字错误10049,我不应该收到消息对话:''错误''吗?在下面查看我的代码
begin
try
ClientSocket1.open;
except
showmessage('error');
end;
end;
我究竟做错了什么?
您应该做的是处理 TClientSocket 的 Error 事件,因为您可以在那里捕获您的套接字错误。
ErrorCode 参数是带有 WinSock 错误代码的参数 如果要让 Error 静音,可以将 ErrorCode 设置为 0,这样可以防止异常被抛出,然后您可以识别错误是什么并处理它你想要的方式
procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
var error : Integer;
begin
error := ErrorCode; {prevent exception from being thrown}
ErrorCode := 0;
if error = 10049 then
showmessage('asynchronous socket error');
.
.
.
end;
我希望这有帮助
盖坦·西里
TClientsocket 组件(已弃用 一段时间)使用异步通信模型,因此可能不是在 Open 方法中引发异常,而是在接收传入数据的消息/事件处理方法中引发异常。
更新:如果我输入一个无效的 IP 地址,如 1.2.3.4,我可以用 Delphi 6 和给定的代码重现这个
为了解决这个问题,我会转移到像 Indy 或Ararat Synapse这样的 TCP/IP 库(两者都有一个通用的 TCP 客户端组件)。