수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1693843
  • Today | 194
  • Yesterday | 588

Embedded2005/10/08 14:07

임베디드 MSN 메신저 서버로의 여행-4

정지용

문자열을 토큰화하기
<리스트 1>을 살펴보면 알 수 있듯이 MSN 프로토콜은 공백을 단위로 구분한다. 게다가 한 명령줄에 다수의 파라미터가 오는 경우 모두 잘라서 보관하고 있어야 한다. 이를 위해서 간단한 함수를 만들어서 이용하면 편리하다. <리스트 3>을 보면 2개의 함수가 있는데 하나는 공백을 단위로 토큰화시키는 함수이고 다른 하나는 할당된 메모리를 해제하는 함수이다. 임베디드 프로그래밍에서는 효율성이 매우 중요하다. 특히 메모리 효율이 더욱 중요한데 한번 사용한 메모리를 돌려주는 것을 절대 잊어서는 안된다. 그리고 상당 수의 버그들은 메모리 관리를 철저하게 하지 않아서 생기는 것들이다. 메모리 관리를 위해서는 함수 내에서 메모리를 할당하는 것을 피해야 하지만 편의성이 매우 뛰어나기 때문에 함수 내에서 메모리를 할당하고 추후 별도로 해제시켜 주는 함수를 제작해 이용했다.
필자가 MSN 메신저를 제작하면서 디버그 기간을 최소화할 수 있었던 가장 큰 요인은 바로 이 메모리 해제에 있다. 완벽할 수는 없지만 한번 사용한 메모리 중 필요가 없는 부분은 그 즉시 해제시킴으로써 프로그래밍 중간에 발생할 수 있는 다양한 버그를 미연에 방지했다. 특히 최종 디버깅 작업을 할 때 메모리 할당 함수와 해제 함수가 짝을 이루어 사용함으로써 메모리 누수 등의 버그를 상당히 많이 해결할 수 있었다.

MSN 메신저 세부 설계하기
앞에서 MSN 프로토콜과 그 프로토콜을 처리하기 위한 몇 가지 함수들을 살펴보았다. 이제 총알은 준비된 셈이다. 총에 총알을 넣고 조준하여 쏘기만 하면 된다. 머릿 속으로 지금까지의 내용을 정리해 보자. 처음 DS로 접속을 하여 NS로 접속하고 MS 패스포트 서버를 통해 인증 티켓을 받은 후 NS로 그 티켓을 넘긴다. 그 이후부터는 NS와 데이터를 주고받게 된다. 그룹 리스트, 친구 리스트 그리고 약간의 정보를 받고 처리한 다음 온라인 상태로 설정하면 접속이 완료된다. 머릿 속에서 <그림 2>와 같은 그림이 그려졌을 것이다. <그림 2>와 같은 그림을 떠올릴 수 있다면 이미 MSN 프로토콜 접속부를 완성한 것과 다름이 없다. 순차적으로 메시지를 주고 받으면서 이어가는 지루한 작업은 단지 시간과의 싸움일 뿐이다. 좀 더 세부적인 그림을 그려보자.
<그림 3>은 인증에서 접속 완료까지를 좀 더 세부적으로 나타내었다. 응답 루틴 아래에 명령어들은 해당 명령을 서버로부터 수신했을 때 필요한 처리 과정을 넣으면 될 것이다. 그리고 다음 과정을 진행하기 위한 명령을 송신할 것이다. 간단한 예를 하나 살펴보자.





[송신] VER 1 MSNP8 CVR0
[수신] VER 1 MSNP8 CVR0
[송신] CVR 2 0x0409 win 4.10 i386 MSNMSGR 5.0.0544 MSMSGS


앞의 예는 <리스트 1>의 첫 부분이다. 최초 VER을 송신한 이후 다시 VER을 수신할 때에는 파라미터에 따라 일련의 처리 과정을 거쳐 처리하면 될 것이다. 그리고 다음 명령인 CVR을 전송함으로써 자연스럽게 다음으로 이어 갈 수 있다. 여기서 주의해야 할 것은 같은 명령이라 하더라도 파라미터의 값에 따라 서로 다른 처리를 해야 하는 경우가 있다는 것이다. 예를 들면 LST 명령은 파라미터에 따라 FL, RL, AL, BL로 나뉘기 때문에 각각의 처리를 별도로 해 주어야 한다. 다른 명령들 역시 각각의 기능에 맞게 처리할 수 있도록 제작하면 될 것이다.
"Embedded" 카테고리의 다른 글
  • Windows CE용 CAB 파일 만드는 법 (2) (0)2007/01/09
  • Windows CE용 CAB 파일 만드는 법 (1) (0)2007/01/09
  • 임베디드 MSN 메신저 서버로의 여행-4 (0)2005/10/08
  • 임베디드 MSN 메신저 서버로의 여행-3 (0)2005/10/08
  • 임베디드 MSN 메신저 서버로의 여행-2 (0)2005/10/08
2005/10/08 14:07 2005/10/08 14:07
Posted by webdizen
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/1566

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1 ... 1598 1599 1600 1601 1602 1603 1604 1605 1606 ... 3009  Next»

RSS HanRSS
Blog Image
webdizen
이곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (3009)
Webdizen (141)
Life (6)
Diary (16)
Blog (9)
IDEA (2)
Travel (10)
Book (16)
Photo (7)
Movie (8)
Music (14)
Leisure Sports (10)
Funny (6)
Hardware (121)
Software (120)
Windows (5)
Unix & Linux (120)
Installation (5)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (804)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (2)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (4)
Network (66)
Web (79)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • Scanner
  • SQL Injection
  • Adobe
  • 삼성이건희장학생
  • net-snmp
  • 마주앙 스페셜
  • RAISERROR
  • Solaris
  • Visual Studio 6
  • 프린트 다이얼로그
  • 삼육
  • HTML 2.0
  • 슈크렘지
  • 악성 소프트웨어
  • 우선순위
  • console
  • 이명박
  • Application
  • ucd-snmp
  • J&B 제트

Recent Articles

  • 트위터(Twitter)의 시작!.
  • 청년 리더의 조건.
  • 애플의 타블렛 PC - 아이패드....
  • 미래의 인터페이스 - 육감 기....
  • 기초발성법 동영상 강좌.

Recent Comments

  • 학교 과제물중 쓰레드에 대하....
    장진혁 03/17
  • 관리자만 볼 수 있는 댓글입....
    비밀방문자 03/12
  • 상대방의 이야기를 열심히 경....
    DoNuts 03/03
  • Lots of students know techn....
    Bobbi35Shannon 02/25
  • 좋은글 잘 보고 갑니다..
    Und_hacker 01/08

Recent Trackbacks

  • printf,scanf를 이용한 형식....
    yundream의 프로그래밍 이야기 03/10
  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 2009
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007

Archive

  • 2010/02 (1)
  • 2010/01 (6)
  • 2009/12 (5)
  • 2009/09 (3)
  • 2009/08 (1)

Calendar

«   2010/03   »
일 월 화 수 목 금 토
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.