C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

메신저 프로젝트
[46] 메신저 제작에 필요한 여러 프로세스들..
한동훈 [] 8439 읽음    2001-05-26 11:20
안녕하세요 한동훈입니다.

현재 메신저 제작을 위해 정확한 기능 명세서는 나오지 않아 어떤 기능이 추가될지는 잘 모르겠지만

대략적으로 몇가지 끄적 거려 봅니다.

1. 서버 프로그래밍

- 일단 서버 프로그래밍은 Linux, Unix 소켓을 사용해서 만들 수 있고, 또는 Cbuilder를 이용해서
   서비스 어플로 제작을 해 도 무난합니다. 현재 모든 소켓 서버들은 계층형 서버(?)를 지향하고 있
   습니다. 즉 메인 모체가 되는 서버와 접속점 형태의 여러 서버가 존재해 더 많은 사용자를 받을
   수 있게 대부분 설계 되고 있습니다. (아무리 좋은 서버시스템이라도 한 서버에 1500 이상 받기는
   어렵다고 봅니다.) 이렇게 제작할 경우 모서버와 접속점 서버의 업무 분담을 확실 하게 해 주는것이
   중요합니다. 대략적인 모양은 위와 같은 계층형 서버로 하고 서버 프로그래밍은 Database와의 연동도
   들어가게 됩니다. 각종 로그인, 친구찾기 와 같은 기능이 이 부분을 통해 구현 하게 됩니다. 서버
   프로그래밍 쪽은 모양세보다는 성능에 많이 치우쳐서 설계하고 코딩하는것이 좋습니다. 그리고 소켓
   의 종류에는 동기 소켓과 비동기 소켓이 있는데, (저 개인적으로 동기 소켓을 좋아합니다.) 어느쪽
   을 사용하던 크게 성능의 차이는 없으니 설계 단계에서 공통적으로 정하고 넘어가면 됩니다. 서버가
   크래쉬 되었을때의 상황도 생각해야 합니다.

2. 클라이언트 프로그래밍
  - 아무래도 메신저의 꽃은 클라이언트의 기능입니다. 많은 기능을 지원하고 예쁘면 더욱 좋습니다(^^;;)
    친구등록, 찾기, 그룹관리, 대화, 메모, 파일전송등이 메신저가 가지고 있는 공통적인 기능들이고
    이외 특별한 기능이 들어가면 좋습니다. (예 : 음악 청취, 화상음성 통신, 제어관리 프로그램등)
    클라이언트 프로그래밍은 거의 서버에서 보내주는 정보를 다시 보기 좋게 편집하고 P2P를 통한 상대
    방과의 연결이기 때문에 그렇게 원론적인 기술이 들어가는 부분은 없습니다. (기본 기능은) 기본 기능
    이외의 기능은 다른 DLL이나 EXE로 빼서 사용하는 것이 좋습니다.

3. 가상 IP와 방화벽 문제
  - 가장 많이 대두되는 문제로 대표적인 다음 메신저의 경우는 넷스케이프 엔터프라이즈를 수정해서 사용
    함으로써 80포트를 이용하는 방식으로 이러한 방법을 해결 하고 있는것으로 알 고 있습니다. 웹서버
    라는게 여러분도 알다시피 한번 GET하면 정보를 보내주고 Disconnect 시켜버리는 방식으로 제가 생각
    하기에는 헤더가 커서 느린편인 TCP에서는 비 효율적인 방법이라고 생각합니다. (물론 제 개인적인
    생각입니다.) 일단 클라이언트가 서버에 접속하게 되면 Socket Handler값을 서버에서 리스트관리를
    하기때문에 서버를 통해서 상대에게 전송하는것은 크게 가상 IP 방화벽 문제가 없지만 P2P의 경우
    크게 문제가 되니 이런 부분에 대한 정책 결정도 필요 하다고 생각됩니다.

4. 인터페이스 디자인
  - 메신저의 꽃은 앞에서 클라이언트라고 했습니다. 이러한 꽃의 껍데기가 바로 인터페이스 입니다.
    이 부분은 섬세한 디자인의 손길이 필요한곳입니다. 프로그래머 여러분이 어설프게 디자인 해서 붙
    이지만 않으면 모든 문제 해결 입니다용

5. 패킷 인코딩과 디코딩
  - 일반적으로 간단히 만드는 메신저의 경우 패킷 암호화는 하지 않고 단순한 인코딩과 디코딩 과정을
    거칩니다. 이러한 과정은 사용자가 패킷에 사용되면 특수 문자나 방식을 인코딩을 통해 사용자 정
    보라는것을 인식시키거나, 데이터의 형식화를 하기 위해 사용됩니다. 이러한 인코딩 디코딩은 따로
    DLL로 만들어 사용하는 것이 좋습니다.

6. 데이터 베이스 설계
  - 서버 프로그래밍 쪽에 속할 수도 있지만, 중요한 부분이라서 빼서 언급합니다. 아무리 간단한 메신
    저 프로그램이라도 약간의 DB 설계 실수로 현저하게 느려질 수 있으니 주의해야 합니다. 개인적으로
    는 단순 쿼리 보다는 스토어드 프로시져를 이용한 접근 방식으로 추천합니다. (코드도 깔끔해 지고
    정리도 잘 되니까)

7. 서버 OS, Database 선정
  - 특별히 신경 쓸건 없습니다.

지금까지 대략 적어봤는데 빠진게 있을지도 모릅니다.

하여간 메신저 프로그래밍은 거의 소켓에서 시작해서 소켓으로 끝납니다.

추천할 만한 책은 UNIX Network Programming Bible 이라는 책하고 W32 네트워크 프로그래밍 이라는 책입니다. 앞의 책은 2판 까지 나올 정도로 UNIX 소켓 통신에 대해서는 명서로 알려진 책입니다. 뒤의 책은 Winsock에 대해서 설명한 것이 대부분이고 거의 CAsyncSocket 사용법으로 나와있습니다.

그럼 많은 도움이 되시길..

그럼 이만

+ -

관련 글 리스트
46 메신저 제작에 필요한 여러 프로세스들.. 한동훈 8439 2001/05/26
53     Re:메신저 제작에 필요한 여러 프로세스들.. 수야 7765 2001/05/28
50     ^^; 이렇게 좋은 글을 올리시다닝~~~ㅋㅋㅋㅋ 홍지곤 7645 2001/05/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.