리눅스에서 C/C++로 웹 서버를 쓰는 방법
리눅스 플랫폼에서 작은 (읽기: 기본적인) 웹 서버를 개발하려고 하는데 어디서부터 시작해야 할지 모르겠습니다.
제가 원하는 것은 다음과 같습니다.
- 특정 포트에서 수신
- HTTP 포스트를 작성하고 요청 받기
- 적절하게 대응하기
- 세션 관리 필요 없음
- C 또는 C++에 있어야 함
- 부팅 시 서비스로 실행해야 함
저는 HTTP 헤더를 잘 알고 있고 경험이 풍부한 PHP 및 .넷 웹 개발자이지만 이 작업을 어디서부터 시작해야 할지 잘 모르겠습니다.
학습 곡선을 메울 수 있는 몇 가지 자료를 알려주시겠습니까?
톱다운 방식으로 다음 사항에 대해 알아야 합니다.
- HTTP 프로토콜
- TCP 서버 - BSD 소켓 프로그래밍
- 기본 유닉스 데몬 쓰기(영구 서비스)
- 공정관리(fork)
- 구문 분석 텍스트(구성 텍스트 파일 읽기)
- 파일 처리(I/O)
- 디버깅 C / C++ 프로그래밍 :)
그래서 기본적인 유닉스 응용 프로그램 작성, TCP/IP 네트워크 프로그래밍을 위한 BSD 소켓 프로그래밍, HTTP 프로토콜에 대해 배워야 할 것입니다.
일반적으로 사용되는 텍스트는 다음과 같습니다.
유닉스 응용 프로그램 개발:
- Unix 환경에서의 고급 프로그래밍, Stevens & Rago
- 고급 유닉스 프로그래밍
TCP/IP(소켓) 프로그래밍:
- Unix 네트워크 프로그래밍, Volume 1 Stevens et al.
- TCP/IP 그림, Stevens
- TCP/IP, Volume 3, Comer와의 인터넷 네트워킹
HTTP 프로토콜
- 다음을 포함한 RFC
- HTTP v1.1에 대한 RFC 2616,
- v1.1 이전 버전의 RFC 2068
- 지원 여부(압축, URI/URL) 및 완성도에 따라 기타 정보를 추가할 수 있습니다.
SIMPLETE/BASIC/Ultra-LIGHT HTTP 서버의 경우 프로그램 흐름은 다음과 같아야 합니다(사이비 코드).
----Main thread----
Load settings
while true do
Wait for connection
Connection received, create a new thread and transfer this connection to this thread.
end
----Connection thread----
Analyze request
if dynamic content do
Dump the HTTP request and send it to the interpreter
Wait for response from the interpreter
Read response header from the interpreter
Stream response
else if static content do
Load requested file
Stream file content
end
(Optional) Cache the response if size < X
Send the response
Close the socket
따라서 스레드화, 프로세스간 통신(인터프리터와 상호 작용을 원할 경우), 소켓 프로그래밍 및 HTTP 프로토콜을 학습해야 합니다.
여기서는 모든 세부사항을 설명할 수 없습니다.
C를 이용한 기본 서버 생성을 위해서 http://www.linuxhowtos.org/C_C++/socket.htm 을 방문하세요.
IBM의 또 다른 제품: http://www.ibm.com/developerworks/systems/library/es-nweb/index.html
항상 기존 코드 베이스로 시작할 수 있습니다.보아는 크기가 작고 C로 구현되어 있으며 '부팅 시 시동' 요구 사항에 적합하기 때문에 시작이 될 수 있습니다. 자세한 내용은 Debian/Ubuntu 패키지에 나와 있습니다.
http://en.wikipedia.org/wiki/Comparison_of_lightweight_web_servers
다시한번 위키피디아에 감사드립니다.
그건 그렇고 - 당신은 "내장된 웹 서버 오픈 소스"를 구글에 검색하고 싶을 수도 있습니다.
(www).ibm.com/developerworks/web/library/wa-ltwebserv/
liveevent library를 사용하면 c코드 40줄로 웹서버를 작성할 수 있습니다.
http://www.ruilog.com/article/view/5249.html
처음부터 만들려는 경우 lighttpd, apache, nginx와 같이 c로 작성된 오픈 소스 웹 서버를 참조할 수 있습니다.
언급URL : https://stackoverflow.com/questions/2338775/how-do-i-write-a-web-server-in-c-c-on-linux
'source' 카테고리의 다른 글
XMLHttpRequest를 중단하는 내부(클라이언트 및 서버) (0) | 2023.10.29 |
---|---|
Is sending data via UDP sockets on the same machine reliable? (0) | 2023.10.29 |
Oracle - 독립 실행형 프로시저 또는 기능 대신 패키지를 사용해야 하는 이유 (0) | 2023.10.29 |
자바스크립트에서 정의되지 않은 대신 null을 사용하는 이유는 무엇입니까? (0) | 2023.10.29 |
jQuery Full Calendar에 리소스 보기/간트 차트 추가 (0) | 2023.10.29 |