libcurl を使用して API コマンドをローカル サービス (つまり 127.0.0.1) に送信しています。
このプログラムは、(プログラムを使用する) シェル スクリプトを置き換えることを目的としていcurl
ます。
curl_easy_perform()
どこかで 1 秒の遅延があることを除いて、すべてが機能しています。つまり、呼び出してから最初に読み取りコールバック関数が呼び出されるまでに 1 秒が経過します。
C プログラムは次のオプションを使用しています (エラー チェックとコールバック コードは省略されています)。
curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1:12345/x");
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1);
curl_easy_setopt(curl, CURLOPT_INFILESIZE, (long)getLengthOfCommandObject());
curl_easy_setopt(curl, CURLOPT_READFUNCTION, &myReadFunction);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &myWriteFunction);
しかし、次curl
のようにシェルから実行すると:
$ curl --data-binary '<command>' http://127.0.0.1:12345/x
1 秒の遅延に苦しむことなく、すぐに要求を送信します。
遅延の原因は何ですか?また、それを防ぐために設定できるオプションはありますか?
編集サーバーはマングースに基づいています