3

私は古い学校のLinuxバリアント(正確にはQNX)に取り組んでおり、ソケットとアレイだけを使用してWebページ(Cookieやログインなし、ターゲットURLは単なるテキストファイル)を取得する方法が必要です。

誰かがこれのスニペットを手に入れましたか?

注:私はサーバーを制御しておらず、すでにボックスにあるもの以外に作業することはほとんどありません(ライブラリを追加することは、制約を考えると実際には「簡単」ではありません-私はlibcurlが大好きですが)

4

2 に答える 2

9

SSLサポートが必要な場合、または何か凝ったものが必要な場合は、 libcurlを検討します。

ただし、ポート80から単純なWebページを取得するだけの場合は、tcpソケットを開き、「GET /index.html HTTP/1.0\n\r\n\r」を送信して出力を解析します。

于 2009-05-05T15:15:10.097 に答える
8

私はいくつかのコードを持っていますが、(Open)SSLもサポートしているので、ここに投稿するのは少し長いです。

本質的に:

  • URLを解析します(URLスキーム、ホスト名、ポート番号、スキーム固有の部分を分割します

  • ソケットを作成します。

    s = socket(PF_INET, SOCK_STREAM, proto);

  • sockaddr_in構造にリモートIPとポートを入力します

  • ソケットを遠端に接続します。

    err = connect(s, &addr, sizeof(addr));

  • リクエスト文字列を作成します。

    n = snprinf(headers, "GET /%s HTTP/1.0\r\nHost: %s\r\n\r\n", ...);

  • リクエスト文字列を送信します。

    write(s, headers, n);

  • データを読む:

    while (n = read(s, buffer, bufsize) > 0) { ... }

  • ソケットを閉じます。

    close(s);

nb:上記の擬似コードは、応答ヘッダーデータの両方を収集します。2つの間の分割は、最初の空白行です。

于 2009-05-05T15:14:54.390 に答える