source

리눅스에서 C/C++로 웹 서버를 쓰는 방법

ittop 2023. 10. 29. 19:58
반응형

리눅스에서 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

반응형