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

C++빌더 Q&A
C++Builder Programming Q&A
[48991] Re:[질문] 네트윅 응답관련
DoyongID [doyongid] 1117 읽음    2007-04-18 23:47
주고받는 패킷의 맨 앞쪽에 고유인식번호를 넣어서 그걸로 정상적 패킷과 비정상적 패킷을 구분하면 될 것 같네요..

예를 들어서 채팅 패킷의 경우는...

typedef struct
{
    BYTE Cmd;                  // 채팅 패킷의 경우 인식자를 0x01로 규정한다.
    char Name[20];          // 이름
    char ChatMsg[100];   // 채팅 내용
} PACKET_CHAT;

이런 식으로 해서 패킷을 받은 다음에 Cmd의 값이 0x01이 아니면 잘못된 패킷이므로 접속을 끊으면 되겠죠..

위의 예는 아주 간단한 경우를 말한거고요.. 좀 더 깊이 들어가면 복잡한 여러가지 경우가 생깁니다..

TCP의 특성상 클라이언트에서는 100바이트를 보냈는데, 서버는 50바이트만 받는다거나, 100Byte씩 2번을 보냈는데, 서버에서는 한꺼번에 받는다거나... 그런 경우가 종종 생깁니다..


zeFa 님이 쓰신 글 :
: TCP로 서버와 클라이언트를 만들었는데요.
: 기본적인 데이터 처리는 되는데..
: 혹시라도 문제가 있는 패킷이 왔을경우  서버나..
: 클라이언트가 응답을 하지못하여 애러가나는 현상을 처리하는방법을 알고싶습니다.
:
: 쓰다보니 말이조금이상한거 같네요 ;; ㅎㅎ
:
: 그리고
: Excute()
: {
:     m_pStream = new TWinSocketStream(ClientSocket, 120000);
:     while(!Terminated&&ClientSocket->Connected)
:     {
:          ...
:     }
:     if(PeekMessage(...))
:     {
:       switch(Msg.Message)
:       {
:          case WM_OPEN:
:               Open();
:          break;
:       }
:      }
:
: }
:
:
: 이런식의 코드는 이상한건지. ;;
: 서버 안쪽에서 메세지로 이벤트를 발생시킬려는데 PeekMessage가 작동을 안하는거 같아서요 ;;
: 답변부탁드릴께요..
: ;;;;

+ -

관련 글 리스트
48987 [질문] 네트윅 응답관련 zeFa 1068 2007/04/18
48991     Re:[질문] 네트윅 응답관련 DoyongID 1117 2007/04/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.