경량 C++ 웹 서버 소개 civetweb
경량 C++ 웹 서버 소개 civetweb
최근 C/C++로 만들 수 있는 간단한 웹 서버를 찾게 되었는데 적절한 프로젝트를 찾아서 소개한다.
Civetweb
C/C++로 구현된 웹 서버. 프로젝트 저자는 임베디드 C++ 웹 서버라고 표현하고 있다.
기능이 단순해서 사용하기 쉽다. HTTP와 CGI, SSL, SSI, Lua 등을 지원한다.
기능이 단순해서 사용하기 쉽다. HTTP와 CGI, SSL, SSI, Lua 등을 지원한다.
Civetweb은 MIT 라이선스기 때문에 상용 소프트웨어도 제한없이 사용할 수 있다. Civetweb은 C로 구현된 웹 서버 mongoose 프로젝트(https://code.google.com/p/mongoose/)에서 fork되었다. mongoose는 원래 MIT 라이선스였으나 2013년 8월 GNU GPL v2 라이선스로 변경되었다. 즉, Civetweb은 mongoose가 GPL v2 라이선스를 가지게 됨에 따라 mongoose가 아직 MIT 라이선스일 때부터 fork 되어 MIT 라이선스를 유지하는 것이 Civetweb에서 명시하고 있는 프로젝트의 가장 큰 목적이다. (프로젝트에 기여하는 개발자들에게도 GPL 라이선스 변경 이후 mongoose 코드를 사용하지 말 것을 강조하고 있다. 최신 기능과 Sergey Lyubka(mongoose의 저자)가 작성한 훌륭한 기능들을 사용하고 싶으면 mongoose를 사용해 달라고 말하고 있다. 물론 GNU v2 라이선스를 유지할 수 있다면.)
따라서 GPL 라이선스 제약에서 자유롭고 싶으면 mongoose 대신 Civetweb은 강력한 대안이 될 것이다.
최종 사용자를 위한 서버 프로그램은 SourceForge에서 다운로드 받을 수 있다. https://sourceforge.net/projects/civetweb/
개발자를 위한 풀 소스 접근이나 기여는 GitHub에서 할 수 있다. https://github.com/bel2125/civetweb
토론은 구글 그룹에 열려있다. https://groups.google.com/d/forum/civetweb
개발자를 위한 풀 소스 접근이나 기여는 GitHub에서 할 수 있다. https://github.com/bel2125/civetweb
토론은 구글 그룹에 열려있다. https://groups.google.com/d/forum/civetweb
Quick Start
다음은 C 프로젝트에서 Civetweb을 사용하여 HTTP 서버를 열어 Hello civetweb 페이지를 리턴하는 예제다. 사용하기 간단다는 것을 보여준다.
다음은 C 프로젝트에서 Civetweb을 사용하여 HTTP 서버를 열어 Hello civetweb 페이지를 리턴하는 예제다. 사용하기 간단다는 것을 보여준다.
C 코드는 mongoose과 거의 같다. C++ 클래스로 랩핑된 버전도 있다.
CivetSevrer.cpp civetweb.c Civetserver.h civetweb.h
MFC에서 사용하려면 각 헤더에 stdafx.h를 추가하고 civetweb.c 확장자를 .cpp로 변경하고 사소한 캐스팅 오류가 나는 몇 부분을 수정하면 된다.
CivetServer 클래스는 다음 같이 사용한다. 핸들러 클래스를 만들고 CivetServer 클래스를 선언해 핸들러를 등록하면 끝난다.
CGI, Lua, WebSocket 등도 프로젝트에 첨부된 예제를 보면 어렵지 않다.
Have fun!