0

HTTP を使用してダウンロードする画像をいくつか取得しました。これらの画像の URL を取得しました。TCP ベースの HTTP バッファを構築して画像をダウンロードするにはどうすればよいですか?

現在のプラットフォームにはライブラリがありません。このプラットフォームでサポートされている言語は C だけなので、これらのリソース用の HTTP バッファを構築する必要があります。

現在、私は通常の API リクエストを作成しました。それらはすべて HTTP リクエストであり、すべてのリクエストには 0 個以上のパラメータがあります。しかし、イメージ リクエストはhttp://some-image.jpgなどの URL しか取得できませんでした。これは単なるダウンロードジョブのようで、API パラメーターも承認もありません。単純ですが、TCP リクエストをどのように作成するのでしょうか?

4

3 に答える 3

3

HTTP プロトコルまたはそのサブセットを実装する必要があります。オープンソースの実装があります。例えば:

https://github.com/bagder/curl/tree/master/lib

https://github.com/joshthecoder/libhttp

于 2012-05-21T07:09:11.643 に答える
1

http://www.jmarshall.com/easy/http/#sampleによると、次のようにTCPリクエストを作成します。

sprintf(tcp_send_buf, "GET %s HTTP/1.1\r\nHost: %s\r\n\r\n", img_path, img_host);

/* I wrapped TCP APIs for convenient, hope you understand it... */
set_host_and_port(img_host, 80);
tcp_send(tcp_send_buf, strlen(tcp_send_buf), recv_callback);

私のrecv_callback場合、次のようなサーバー応答を受け取りました。

HTTP/1.1 200 OK
Content-Length: 42299
Content-Type: image/jpeg
Last-Modified: Mon, 02 Jul 2007 07:58:47 GMT
Accept-Ranges: bytes
ETag: "e2c8b5d17ebcc71:15d5"
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Fri, 25 May 2012 01:33:57 GMT

<binary image data>

Chromeから画像をダウンロードしましたが、サイズはと同じでContent-Length: 42299、画像バッファを取得したと思います。

于 2012-05-25T02:03:13.840 に答える
1

イメージをダウンロードするために TCP ベースの HTTP バッファを構築する方法は?

TCP について考えるのはやめましょう。HTTPレベルで起こっていることとは何の関係もない独自のバッファがあります。

独自の HTTP スタックを実装する必要はありません。簡単なことではありません。よく書かれたものがいくつか既に利用可能です - libcurlの使用をお勧めします。

于 2012-05-21T08:30:46.343 に答える