C言語にて ソケット関数を使って TCP クライアントを作成する
の続きです
HTTP クライアント
HTTP クライアントとは、 ウェブサーバ(HTTPサーバ) に対して、HTTPプロトコルに則り、 データの送受信を行うプログラムのこと。
この記事で作成するのは、簡単なリクエストを送信し、 受信したレスポンスを文字列として表示する簡素なもの。
例えば、example.com に対して、下記のようなリクエストを送信する。
host: example.com
port: 80
GET / HTTP/1.1
Accept: /
Host: example.com
Connection: close
HTTP クライアントを作成する
下記を参考にした。
C 言語で HTTP クライアントを作ってみよう
http://x68000.q-e-d.net/~68user/net/c-http-1.html
下記のようなコードになる。
// ソケットを生成する int sockfd = socket( AF_INET, SOCK_STREAM, 0 ); // IPアドレスとポート番号を指定して、ソケットアドレス構造体を作る struct sockaddr_in sock_addr; sock_addr.sin_family = AF_INET; sock_addr.sin_addr.s_addr = inet_addr( ipaddress ); sock_addr.sin_port = htons( port ); // サーバーに接続する connect( sockfd , (struct sockaddr *)&sock_addr, sizeof(sock_addr) ); // リクエストを送信する write( sockfd , request, strlen(request) ); // レスポンスを受信する read( sockfd , read_buf, BUFSIZE ); // レスポンスを表示する printf("%s \n", read_buf);
実行すると、 下記のようなレスポンスを表示する
HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8 <html> <head> <title>Example Domain</title>
Github にコードを公開した。 https://github.com/ohwada/MAC_cpp_Samples/tree/master/network/http