programing

C에 심플한 HTTP 서버를 구축하다

goodsources 2022. 8. 14. 12:25
반응형

C에 심플한 HTTP 서버를 구축하다

C에 간단한 HTTP 서버를 구축해야 합니다.안내 좀 해주시겠어요?링크? 샘플?

클라이언트 및 서버 작성에 관한 실천 가이드(Practical Guide to Writing Clients and Servers)를 참조해 주십시오.

단계별로 구현해야 하는 것은 다음과 같습니다.

  1. 기본적인 TCP 소켓레이어를 실행합니다(포트/포트로 수신, 클라이언트 접속 수용, 데이터 송수신).
  2. 버퍼링된 리더를 구현하여 요청을 한 번에 한 줄씩(CRLF로 구분됨) 읽을 수 있도록 합니다.
  3. 첫 줄을 읽어라.메서드, 요청 버전 및 경로를 구문 분석합니다.
  4. "Header: value" 구문에 대한 헤더 구문 분석을 구현합니다.접힌 헤더를 펼치는 것을 잊지 마세요.
  5. 요청 방법, 내용 유형 및 내용 크기를 확인하여 본문을 읽을 방법/여부를 결정합니다.
  6. 콘텐츠 유형에 따라 콘텐츠 디코딩을 구현합니다.
  7. HTTP 1.1을 지원하려면 "100 Continue", 킵얼라이브, 청크 전송 등의 기능을 구현합니다.
  8. 불완전한 요구 검출, 최대 클라이언트 수 제한 등 견고성/보안 대책을 추가합니다.
  9. 코드를 축소 랩하여 오픈 소스 :)

작은 httpd를 한 번 보시길 권해드립니다.처음부터 쓰고 싶다면 RFC 2616을 자세히 읽어야 합니다.BSD 소켓을 사용하여 네트워크에 매우 낮은 수준으로 액세스합니다.

HTTP 서버는 개념적으로 단순합니다.

  • 리슨용 포트 80을 엽니다.
  • 연락을 취했을 때는, 약간의 정보를 수집합니다(주로 취득합니다.그 외의 정보는 일단 무시해도 됩니다).
  • 요청을 파일 요청으로 변환합니다.
  • 파일을 열고 클라이언트에 다시 뱉습니다.

지원하는 HTTP의 양에 따라 POST가 조금 복잡해지고 스크립트, 여러 요청 처리 등이 어려워집니다.

하지만 베이스는 매우 단순합니다.

Mongoose(구 Simple HTTP Daemon)는 꽤 좋습니다.특히 Windows, Windows CE 및 UNIX에서 내장 및 컴파일이 가능합니다.

포트 80에서 TCP 소켓을 열고 새로운 연결을 수신하여 구현합니다.목적에 따라 거의 모든 것을 무시할 수 있습니다.소켓에 텍스트를 쓰는 것만으로 모든 요구에 대해 같은 응답을 보낼 수 있습니다.

nweb(Nigel의 웹 서버) "C 소스 코드가 200줄밖에 없는 작고 안전한 웹 서버 [...]"를 확인합니다.

https://drive.google.com/file/d/0B3msld7qnNOhN1NXaFIwSFU2Mjg/view?usp=sharing&resourcekey=0-ngY0neP78dxJKlFv0PJoDQ http://www.ibm.com/developerworks/systems/library/es-nweb/

이 기사에는 의사 코드, 설명 및 코멘트가 포함되어 있습니다.

편집: IBM의 링크가 끊어졌습니다.웹 페이지의 PDF 파일을 Google Drive에 저장했습니다.다음은 코드 다운로드입니다.

https://drive.google.com/file/d/0B3msld7qnNOhSGZGdDJJMmY0VHM/view?usp=sharing&resourcekey=0-xkbf4mv0gN1sZrhBjt86UQ

@ankushagarwal은 몇 가지 변경을 가하여 GitHub에 자신의 버전을 업로드했습니다.https://github.com/ankushagarwal/nweb

당신이 사용할 수 있도록 제가 직접 써놨습니다.이 제품은 sqlite가 있고 스레드가 안전하며 UNIX의 경우 C++에 있습니다.

분리하여 C 호환 코드를 사용할 수 있어야 합니다.

http://code.google.com/p/mountain-cms/

HTTP 스펙과 Firebug는 숙제를 할 때 매우 유용했습니다.

행운을 빈다.:)

등대 경찰 같은 것의 출처를 찾아보라고 제안합니다.

http://www.manning.com/hethmon/ -- "Paul S의 HTTP 일러스트 가이드"Manning의 "Hethmon"은 HTTP 프로토콜을 배우기에 매우 좋은 책이며 그것을 구현하거나 확장하는 사람에게 매우 유용할 것입니다.

Apache 뒤에 있는 사람들이 그랬던 것처럼 플랫폼별 소켓 함수를 사용하여 HTTP 프로토콜을 캡슐화합니다.

응답이 더 많은 중복 항목이 있습니다.

아직 언급되지 않은 후보 중 하나는 spserver입니다.

언급URL : https://stackoverflow.com/questions/176409/build-a-simple-http-server-in-c

반응형