โ† Back

[ํ”„์ ] ๐ŸฆพC์–ธ์–ด๋กœ HTTP ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ Ch.1

๊ณจ๋“œ๋ฒ„๊ทธ ์žฅ์น˜ ๋งŒ๋“ค๊ธฐ
์ธ๋„ค์ผ

์™œ

C์–ธ์–ด๋ฅผ DEEPํ•˜๊ฒŒ ์จ๋ณด๊ณ  ์‹ถ์–ด์„œ

๋ญ๋ณด๊ณ  ๋งŒ๋“ค์ง€

https://www.youtube.com/watch?v=2HrYIl6GpYg&ab_channel=NirLichtman

์ฒ˜์Œ์—๋Š” ์ด๊ฑธ ๋ณด๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค์–ด๋ณด๋ฉด์„œ ๊ฐ์„ ์žก์•„๋ด์•ผ๊ฒ ๋‹ค

๋‚œ ์šฐ๋ถ„ํˆฌ WSL ํ™˜๊ฒฝ์—์„œ ๋งŒ๋“ค์—ˆ๋‹ค

ใ„ฑใ„ฑ

์ฝ”๋“œ๋ฅผ ํ•œ์ค„์”ฉ ์ฃผ์„์„ ๋‹ฌ์•„๋ณด์ž

#include <sys/socket.h>  // ์†Œ์ผ“ ํ†ต์‹  ํ•จ์ˆ˜
#include <string.h>      // ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ
#include <stdio.h>       // ํ‘œ์ค€ ์ž…์ถœ๋ ฅ
#include <fcntl.h>       // ํŒŒ์ผ ์ œ์–ด
#include <sys/sendfile.h> // ํŒŒ์ผ ์ „์†ก
#include <unistd.h>      // UNIX ํ‘œ์ค€
#include <netinet/in.h>  // ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ
#include <time.h>        // ์‹œ๊ฐ„ ๊ด€๋ จ

int s = socket(AF_INET, SOCK_STREAM, 0);  // TCP/IP ์†Œ์ผ“ ์ƒ์„ฑ

struct sockaddr_in addr = {
    AF_INET,    // IPv4 ์‚ฌ์šฉ
    0x901f,     // ํฌํŠธ 8080 ์ง€์ •
    0           // ๋ชจ๋“  IP ํ—ˆ์šฉ
};

bind(s, &addr, sizeof(addr));   // ์†Œ์ผ“๊ณผ ์ฃผ์†Œ ์—ฐ๊ฒฐ
listen(s, 10);                  // ์ตœ๋Œ€ 10๊ฐœ ํด๋ผ์ด์–ธํŠธ ๋Œ€๊ธฐ์—ด๋กœ ์—ฐ๊ฒฐ ๋Œ€๊ธฐ

int client_fd = accept(s, 0, 0);  // ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ์ˆ˜๋ฝ

char buffer[256] = {0};           // ์š”์ฒญ ์ €์žฅํ•  ๋ฒ„ํผ ์ƒ์„ฑ
recv(client_fd, buffer, 256, 0);  // ํด๋ผ์ด์–ธํŠธ HTTP ์š”์ฒญ ์ˆ˜์‹ 

char* f = buffer + 5;             // "GET /" ์ดํ›„์˜ ํŒŒ์ผ๋ช… ์ถ”์ถœ
*strchr(f, ' ') = 0;             // ํŒŒ์ผ๋ช… ๋ ๋„๋ฌธ์ž ์‚ฝ์ž…

int opened_fd = open(f, O_RDONLY);  // ์š”์ฒญ๋œ ํŒŒ์ผ ์—ด๊ธฐ
sendfile(client_fd, opened_fd, 0, 256);  // ํŒŒ์ผ ๋‚ด์šฉ ์ „์†ก

close(opened_fd);    // ํŒŒ์ผ ๋‹ซ๊ธฐ
close(client_fd);    // ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ๋‹ซ๊ธฐ
close(s);           // ์„œ๋ฒ„ ์†Œ์ผ“ ๋‹ซ๊ธฐ
return 0;

์‚ด์ง์˜ ์—๋Ÿฌ

์ด๋ ‡๊ฒŒ ์งง์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ๋„ ์—๋Ÿฌ๊ฐ€ ์ƒ๊ฒผ๋‹ค

๋ฐ”๋กœ index.htmlํŒŒ์ผ์ด ๋‹ค์šด์ด ๋˜์ง€ ์•Š๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ์—ˆ๋‹ค

ํ•ด๊ฒฐ

์„œ๋ฒ„์™€ ๊ฐ™์€ ํด๋”์—์„œ index.html์„ ๋‹ค์šด ๋ฐ›์œผ๋ ค๊ณ  ํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

๋‹ค๋ฅธ temp ํด๋”๋ฅผ ๋งŒ๋“ค์–ด์„œ html ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์œผ๋ฉด ์ œ๋Œ€๋กœ ๋œ๋‹ค.

์†Œ๊ฐ

GPTํ•œํ…Œ ์„ค๋ช…์ข€ ํ•ด๋‹ฌ๋ผํ–ˆ๋Š”๋ฐ, ์ž˜๋œ ๊ฑฐ ๊ฐ™๋‹ค.ย 

์ด๋Ÿฐ๊ฑธ๋กœ ๋…ผ๋ฌธ ํ•˜๋‚˜ ์ž‘์„ฑํ•ด๋ณด๊ณ  ์‹ถ๋‹ค

โ†

[๊ณต๋ถ€] Kubernetes์™€ Docker

์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ• ๊นŒ

โ†’

[ํ”„์ ] ๐ŸฆพC์–ธ์–ด๋กœ HTTP ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ Ch.2

๊ณจ๋“œ๋ฒ„๊ทธ ์žฅ์น˜ ๋งŒ๋“ค๊ธฐ