
์
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ํํ ์ค๋ช ์ข ํด๋ฌ๋ผํ๋๋ฐ, ์๋ ๊ฑฐ ๊ฐ๋ค.ย
์ด๋ฐ๊ฑธ๋ก ๋ ผ๋ฌธ ํ๋ ์์ฑํด๋ณด๊ณ ์ถ๋ค