최근에 GNU 프로젝트가 릴리스를 발표했습니다. 라이브러리의 새 버전 libmicrohttpd 0.9.74, 응용 프로그램에 내장된 HTTP 서버 기능을 위한 간단한 API를 나타냅니다.
도서관 HTTP 1.1 프로토콜, TLS, POST 요청 증분 처리 지원, 기본 및 다이제스트 인증, IPv6, SHOUTcast 및 다양한 연결 다중화 방법(select, poll, pthread, 스레드 풀), 현재 구현은 GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android를 포함한 다양한 지원 플랫폼을 지원합니다. , macOS, Win32, Symbian 및 z/OS.
GNU libmicrohttpd는 당시 다른 프로젝트에 동시 HTTP 서버를 쉽게 추가할 수 있는 방법이 필요했던 작성자의 필요로 인해 탄생했습니다. 기존 대안은 자유롭지 않거나, 재진입하지 않거나, 독립형이거나, 코드 품질이 좋지 않거나, 또는 이들의 조합이었습니다.
특성의 이 구현에서 눈에 띄는 것은 다음과 같습니다.
- 라이브러리 C: 빠르고 작은
- API는 단순하고 표현이 풍부하며 완전히 재진입합니다.
- 구현은 HTTP 1.1을 준수합니다.
- HTTP 서버는 여러 포트에서 수신 대기할 수 있습니다.
- 다중 스레딩 모드: 응용 프로그램 스레드, 내부 스레드, 스레드 풀 및 연결당 스레드에서 실행
- 세 가지 다른 소켓 폴링 모드: select(), poll() 및 epoll
- 추가 커널/사용자 모드 변경을 피하기 위한 최소 시스템 호출 수
- 지원되는 플랫폼에는 GNU/Linux, FreeBSD, OpenBSD, NetBSD, Android, Darwin(macOS), W32, OpenIndiana/
- 솔라리스 및 z/OS
- IPv6 지원
- SHOUTcast 지원
- POST 데이터의 증분 처리 지원(선택 사항)
- 기본 및 암시적 인증 지원(선택 사항)
- TLS 지원(libgnutls 필요, 선택 사항)
- 바이너리는 약 32k에 불과합니다(TLS 지원 및 기타 선택적 기능 제외).
libmicrohttpd 0.9.74의 주요 새 기능
라이브러리에서 제공되는 이 새 버전에서는 다음을 찾을 수 있습니다. WebSockets 프로토콜의 실험적 구현을 추가했습니다. 아직 제대로 테스트되지 않았으며 기본적으로 비활성화되어 있습니다.
제시되는 또 다른 참신함은 HTTP 1.0 / 1.1 프로토콜 구현 사양에 대한 준수가 향상되었습니다.또한 코드가 조각난 요청을 디코딩하도록 재작업되었습니다.
또한 잘못된 청크 요청과 관련된 오류를 자동으로 반환하는 코드 추가, 너무 큰 데이터 크기 및 잘못된 Content-Length 헤더 설정.
실현되었습니다 내부 최적화, 예를 들어, 향상된 메모리 관리, 향상된 해시 효율성, HTTP 메서드 및 프로토콜 버전의 반복적인 구문 분석 제거 등이 있습니다.
또한 HTTP 헤더 값에 대한 더 엄격한 유효성 검사를 제공하고 응답 헤더 값에 탭 문자 사용을 허용했지만 사용자 정의 헤더 값에 공백 사용을 금지했습니다.
그 외에도 응답으로 HTTP 헤더를 생성하는 코드가 완전히 재작성되었습니다. 시간 초과 정밀도가 초에서 밀리초로 증가했습니다.
코드에서 문제 감지 모드를 선택적으로 활성화하기 위해 빌드 옵션 –enable-sanitizers [= address, undefined, leak, user-poison]를 추가했습니다.
Doxy 기능에 대한 설명을 수정, 명확화, 확장 및 개선했으며 이제 제목을 읽는 것만으로 MHD를 훨씬 쉽게 배울 수 있다고 언급했습니다.
이 새 버전에서 눈에 띄는 다른 변경 사항 :
- microhttpd.h 헤더 파일의 기능 설명이 개선되었습니다.
- API 함수 MHD_get_reason_phrase_len_for ()와 MHD_create_response_from_buffer_with_free_callback_cls ()를 추가, MHD_CONNECTION_INFO_HTTP_STATUS 플래그, MHD_get_connection_info ()뿐만 아니라 MHD_CONNECTION_INFO_HTTP_STATUS 플래그 응답 및 MHD_SDRIVE_HDRFKE_HDR_HDRF_HDR_HDRF_HDRF_REND_HDRF_HDRF_REND_HDRF_HDR_RF_RF_HDR_RF_HDRF_ 응답.
- MSVC에서 어셈블리용 프로젝트 파일을 추가했습니다.
- 응답 헤더 형성이 완전히 다시 작성되었습니다. 새로운 구현은 더 강력하고 유지 관리 및 확장이 쉬우며 RFC HTTP 사양을 더 잘 따릅니다.
- 성능 향상: 이제 HTTP 버전 및 요청 메서드가 한 번만 디코딩됩니다(이전 MHD는 많은 문자열 비교를 사용했습니다.
최종적으로 그것에 대해 더 많이 알고 싶다면 이 릴리스에 대해 웹 사이트에서 사용자 설명서 및 기타 정보를 참조할 수 있습니다.