オプションのサーバーアプリケーションに通知メッセージを送信する必要があるクライアントアプリケーションがあります。クライアントは、サーバーアプリケーションが存在するかどうかに影響されないようにする必要があります。サーバーアプリケーションへの接続を試みて通知メッセージを送信し、エラーが発生した場合は、すべてのエラーを黙って無視して作業を続行する必要があります。
TCP通信にIndyを使用していますが、エラーメッセージが表示されないようにするためのすべての試み(つまり、クライアントに接続しているときにサーバーアプリケーションが閉じたとき)が失敗しました。
これを本当に堅牢にする方法はありますか?
現在のコードは次のようになります。
if (not Client.Connected) then
begin
Client.Host := ServerName;
Client.Port := ServerPort;
Client.ConnectTimeout := ConnectTimeout;
try
Client.Connect;
except
Exit;
end;
end
try
Client.IOHandler.WriteLn ('NOTIFYCHANGE "' + Param + '"');
Client.IOHandler.WriteBufferFlush;
except
try
Client.Disconnect;
except
{ ignore errors while disconnecting }
end;
try
Client.Connect;
except
{ ignore errors while connecting }
end;
end;