CONTEST Mock TCP 서버

TCP 클라이언트가 보내는 메시지와 커넥션을 모니터링하는 서버를 만들어본다.

2014년 12월 3일 초안 작성
2010년 6월 6일 구글 코드 커밋

본문

memcached 클라이언트가 오동작을 하는데 원인을 알 수가 없었다. 클라이언트가 어떤 명령을 전달하는지, 커넥션 풀링은 제대로 되는지 궁금했는데 그걸 확인할 길이 없었던 거다. memcached 의 디버그 옵션도 뒤져보고 여러 오픈소스도 검토해보다가 결국 목업 서버(그래서 기본 포트도 memcached 의 11211 에서 +1 인 11212)를 만들어 테스트 했고 잘 사용한뒤 구글 코드에 올렸다. 그게 4년전, 2010년의 일이다.

개선

더 이상 개선할 일은 없을 줄 알았는데 얼마전 쓸 일이 있어 다시 빌드해보니 버그도 있고 메모리 릭도 있었다. 간만에 쓸려니 토이(toy) 수준이라 그냥 쓰기가 좀 그랬다. vim 으로 만들고 svn 으로 올리던 그때와 달리 지금은 github 도 있고 CLion 도 있고 상황이 많이 좋아지기도 했다. 결국 조금만 고쳐야지 하다가 완전히 리팩토링 했다.

기본적으로 TCP 요청을 받아 pthread_create() 를 이용, 소켓을 새 쓰레드에 할당하는 구조다. 이 구조를 기본으로 코드 정리와 변수명 정리, 목적별 코드 분리, Makefile 개선, 상수값 튜닝, C99 컴파일 오류 수정, 설명 추가 등을 진행했다. 빌드가 간단 하지만 추후에 Autotools 도 적용할 계획이 있다.

정식 명칭은 CONTEST 이다.

A Very Simple TCP CONnection TESTer 를 줄여서 정했다. TCP 클라이언트가 보내는 메시지와 커넥션을 모니터링하는 Mock TCP Server 이다.

데모

크롬으로 접속했을때 화면이다. 크롬은 기본적으로 2개의 커넥션을 동시에 요청한다는걸 알 수 있고, 크롬의 HTTP 헤더 정보도 확인할 수 있다. 이처럼 가상 서버로 동작해 클라이언트의 요청 메시지, 커넥션 점검에 매우 유용하게 활용할 수 있다.

코드는 C 로 작성했으며 깃헙 주소는 아래와 같다.
likejazz/contest-server - GitHub

is a collection of Papers I have written.
© 2000 - Sang-Kil Park Except where otherwise noted, content on this site is licensed under a CC BY-NC 4.0.
This site design was brought from Distill.