0

libcurl を使用していますが、現在直面している「接続が切れているようです」という問題についての情報が必要です。</p>

安全なメッセージ転送のために、SSLサポート(TLS)を備えたlibcurl easy performを使用してサーバーに接続しています。

ただし、私が直面している問題については、インターネット上で十分な情報が表示されていません (正しい言葉で見ていない可能性があります)。

大まかに言えば、これが起こることです。サーバーとの接続を正常に確立でき、データを送受信できます。セッションを小さなウィンドウ (15 秒) の間アイドル状態にしてから、さらにトランザクション/メッセージをトリガーすると、libcurl のコンソール ログに「接続が停止しているようです」と「再接続」が表示されます。しかし、簡単な実行でカールが自然にタイムアウトすると、そこにハングアップしてタイムアウトします。

「wireshark」を起動し、既存の接続の再利用を開始する前にサーバーから「FIN、ACK」および「ACK」パケットを受信したことを分析しました。しかし、クライアントからサーバーへのACKでサーバーに応答するのにかなりの時間を待ったので、サーバーは私の将来の要求を尊重しないと思います.

接続中に受信した FIN,ACK に対してサーバーにすぐに応答できる方法はありますか?

これはlibcurlの問題ですか、接続の途中でFIN、ACKが表示される理由をサーバーチームと話し合う必要があります

4

1 に答える 1

-1

クライアント/サーバー間で TCP キープアライブをオンにしていますか。curl で指定したキープアライブ値を確認してください。適切なキープアライブ間隔により、クライアントに送信するものが何もない場合でも接続が有効になります。

libcurl ヘルプ ドキュメントから: CURLOPT_TCP_KEEPALIVE

長い間渡します。1 に設定すると、TCP キープアライブ プローブが送信されます。これらのプローブの遅延と頻度は、オペレーティング システムがサポートしている場合、CURLOPT_TCP_KEEPIDLE および CURLOPT_TCP_KEEPINTVL オプションによって制御できます。キープアライブ プローブを無効にするには、0 (デフォルトの動作) に設定します。

于 2013-11-05T01:33:09.540 に答える