プログラムを (デバッガー/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エラーコードを持つパラメーターです。エラーを消音したい場合は、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;
これがお役に立てば幸いです
Gaetan Siry
TClientsocketコンポーネント(すでにしばらくは非推奨 )は非同期通信モデルを使用しているため、Openメソッドではなく、着信データを受信するメッセージ/イベント処理メソッドで例外がスローされる可能性があります。
更新:1.2.3.4のような無効なIPアドレスを入力した場合、Delphi6と指定されたコードでこれを再現できます
これを修正するには、IndyやAraratSynapseなどのTCP/ IPライブラリに移動します(どちらにも汎用TCPクライアントコンポーネントがあります)。