'채팅프로그래밍'에 해당되는 글 1건

  1. 2007/02/02 TCP/IP 1:1채팅&파일전송 프로그램 (6)
3학년 2학기 임베디드시간에 나온 기말과제.

임베디드시간에 리눅스 커널에 대해서 공부하더니 기말프로젝트로 나온게 1:1전송과 파일전송 프로그램이였다.
TCP/IP는.. 수업시간에 간단한 예제 몇개만 보여주고 알아서 해오라~ 라고 던져준 과제 =ㅂ=)乃.

윤성우님의 TCP/IP 책과 ncurses library문서를 참고해서 제작한 프로그램이다. 이 프로그램을 만들었던게 12월 세번째 주였는데, 이미 회사에 취업해 있던 상태 였으며 하루는 서울에 있는 회사에 출근을 하고 하루는 천안에 있는 학교에 기말고사 시험을 보러 가는 무지막지한 주였다.

User inserted image

구현할때 가장 많이 시간을 들였던건 ncurses library쓰는것. 사실 이 라이브러리가 있다는걸 발견하는것도 오래 걸렸다. kdlp도 뒤지고 google도 뒤지고 해서 알게 되었고, 다행히 library정리는 잘 되어 있어서 쓰는데는 많은 삽질을 하진 않았다.

ncurses library를 쓰게된 이유가 Turbo C의 gotoxy 기능과 getx, gety의 기능을 Linux에서 구현하기 위해서 였는데, 이 기능이 있어야만 상대방으로부터 받은 메시지를 출력하는 부분과 자신의 메시지를 입력하는 부분을 따로 분리해서 구현할 수 있기 때문이다. 안그러면 자신이 메시지 입력하는도중에 상대방으로부터 메시지가 도착하면 골치아픈 상황이 발생하게 된다.

재미있는거는, 프로그램에서 사용하는 통신프로토콜을 수업시간에 조교형이 주었다. 예를들어 채팅 메시지는 TEXT내용 이런식으로 전송된다 라는걸. 하지만 다른 친구들이 만든 프로그램과 테스트를 해보면 제대로 작동이 안된다. 서로 너가 프로토콜을 지키지 않은거야 라고 우기기만 할뿐이다.

3일정도 밤세며 공부하고 배워가며 작업을 했었는데 프로젝트 검사할때는 너무 금방 끝나버려서 아쉽기도했다. 다른 친구들은 교수님께서 실행시켜보고 Vim 사용법이라던지 소켓프로그래밍에대해서 물어보던데 난 실행만 시켰더니 리포트 내라고만 하시고 가셨....

인터페이스를 이쁘게, UI를 편하게, 파일전송을 효과적으로, 글씨 입력과 출력되는부분이 분류되게 등등을 신경쓰다보니 코드가 1100줄이 넘어갔다. Makefile 문법을 제대로 아는것도 아니고 파일 단위로 나누기도 귀찮아서, 프로젝트는 파일 하나에 모든 함수를 다 구현했었는데, Vim에서 500라인까지는 어찌저찌 할 수 있었으나 그 이상이 되니 Vim에디터로는 도저히 진행이 어려워.... EditPlus로 작업을 하고.. ftp에 업로드하고, 리눅스에서 받아 컴파일해 테스트했다 =_=;;;;;;;;

TCP/IP를 처음 사용해본 프로젝트였으며, 오랫만에 원없이 밤세며 코딩해본 프로그램이며, 리눅스에서 처음 진행한 프로젝트라는거에 의의를 두고 싶은.. 프로젝트.

회사에 입사해서 이제 쉴만큼 쉬었으니 프로그래밍에 다시 빠져보자 !!
Posted by Mastojun