0
データ(デルファイ)の送信を停止しTCPソケットは、私はソケット接続を作成し、次のコードを使用して継続的にソケットを介してデータを送信するためのスレッドを使用しています
function TSocketSession.Send(const ADataToSend: TBytes): Integer;
var
Stopwatch: TStopwatch;
SentBytes: Integer;
const
SleepTimeMS = 10;
begin
SiMain.TrackMethod(Self, 'Send');
{$IFDEF USE_SSL}
if FIsSSL then
begin
SiMain.LogInteger('SslState', Ord(FSocket.SslState));
end;
{$ENDIF}
FDataSent := False;
if FSocket.State = wsConnected then
begin
SentBytes := FSocket.Send(@(ADataToSend[Low(ADataToSend)]), Length(ADataToSend));
SiMain.LogInteger('SentBytes', SentBytes);
Stopwatch := TStopwatch.StartNew;
end;
while (FSocket.State = wsConnected) and (not FDataSent) do
begin
FSocket.MessagePump;
Sleep(SleepTimeMS);
if (Stopwatch.ElapsedMilliseconds >= FTimeout) then
begin
FError := CErrorCommTimeout;
break;
end;
end;
Result := FError;
end;
特定のPCでは、ソケットは特定の期間(通常は約1〜2分後に発生します)や問題なく実行される他のPCでデータの送信を停止することに気付きました。誰かがこれを起こす可能性のあるコード内の何かを見ていますか?私は必要に応じてより多くの情報を提供することができます。