質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Q&A

解決済

1回答

951閲覧

応答がないHTTPサーバー

jin-201

総合スコア20

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

0グッド

0クリップ

投稿2019/11/11 01:41

HTTPサーバーの応答がないのですが、何を追加すればいいですか?

#include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> int main() { int sock0; struct sockaddr_in client; socklen_t len; int sock; int yes = 1; struct addrinfo *res, hints; int err; char buf[2048]; int n; char inbuf[2048]; memset(&hints, 0, sizeof(hints)); hints.ai_family = PF_UNSPEC; hints.ai_flags = AI_PASSIVE; hints.ai_socktype = SOCK_STREAM; err = getaddrinfo("192.168.100.119", "12345", &hints, &res); if (err != 0) { printf("getaddrinfo : %s\n", gai_strerror(err)); return 1; } sock0 = socket(res->ai_family, res->ai_socktype, 0); if (sock0 < 0) { perror("socket"); return 1; } setsockopt(sock0, SOL_SOCKET, SO_REUSEADDR, (const char *)&yes, sizeof(yes)); if (bind(sock0, res->ai_addr, res->ai_addrlen) != 0) { perror("bind"); return 1; } if (listen(sock0, 5) != 0) { perror("listen"); return 1; } err = getaddrinfo("192.168.100.119", "12345", &hints, &res); if (err != 0) { printf("getaddrinfo : %s\n", gai_strerror(err)); return 1; } sock0 = socket(res->ai_family, res->ai_socktype, 0); if (sock0 < 0) { perror("socket"); return 1; } setsockopt(sock0, SOL_SOCKET, SO_REUSEADDR, (const char *)&yes, sizeof(yes)); if (bind(sock0, res->ai_addr, res->ai_addrlen) != 0) { perror("bind"); return 1; } if (listen(sock0, 5) != 0) { perror("listen"); return 1; } // 応答用HTTPメッセージ作成 snprintf(buf, sizeof(buf), "HTTP/1.0 200 OK\r\n" "Content-Length: 20\r\n" "Content-Type: text/html\r\n" "\r\n" "HELLO\r\n"); while (1) { len = sizeof(client); sock = accept(sock0, (struct sockaddr *)&client, &len); if (sock < 0) { perror("accept"); break; } n = read(sock, inbuf, sizeof(inbuf)); // 本来ならばクライアントからの要求内容をパースすべきです write(fileno(stdout), inbuf, n); // 相手が何をいおうとダミーHTTPメッセージ送信 write(sock, buf, (int)strlen(buf)); close(sock); // 応答用HTTPメッセージ作成 snprintf(buf, sizeof(buf), "HTTP/1.0 200 OK\r\n" "Content-Length: 20\r\n" "Content-Type: text/html\r\n" "\r\n" "HELLO\r\n"); while (1) { len = sizeof(client); sock = accept(sock0, (struct sockaddr *)&client, &len); if (sock < 0) { perror("accept"); break; } n = read(sock, inbuf, sizeof(inbuf)); // 本来ならばクライアントからの要求内容をパースすべきです write(fileno(stdout), inbuf, n); // 相手が何をいおうとダミーHTTPメッセージ送信 write(sock, buf, (int)strlen(buf)); close(sock); } close(sock0); return 0; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2019/11/11 01:56

そのコードではどういう動作となるんでしょうか。具体的に説明しましょう
guest

回答1

0

自己解決

20となっていたところを変えたら解決しました。

投稿2019/11/11 23:13

jin-201

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問