|
윤성민 님이 쓰신 글 :
: 패킷덩어리
:
: |-Operation Code-||----구조체----|
: 1바이트 Operationcode에 해당하는 structure
:
:
: // 그럼요 여기서 operation code를 어떻게 붙이나요 ?
:
:
: Send에서 위의 같이 보냅니다.
:
: structure a에 해당하는 operation code 가 0x01 이고
: structure b에 해당하는 operation code 는 0x02 이라면
:
:
: 받는 쪽에서는
:
: 먼저 한바이트를 읽고
:
: switch (읽은 한바이트변수)
: {
: case 0x01:
: //--structure에 해당하는 size만큼 읽기
: ....처리함수...
: break;
: case 0x02:
: //--0x02에 해당하는 structure에 해당하는 만큼 size읽기
: ....처리함수2....
: break;
: }
:
: //그리고요 한바이트만 읽을려면 어떻게 해야하나요?
:
: //죄송합니다. 멋진 답변을..ㅠㅠ 그리고 너무 감사해요
: 안녕히..
:
//비동기 소켓일 경우만 예를 들면...동기는 생략
void __fastcall TForm1::SocketReadEvent(....생략....)
{
u_char operation_header; //char든 u_char든 사용자임의대로
Socket->ReceiveBuf(&operation_header,1);
if (operation_header == 0x01)
{
structure a;
Socket->ReceiveBuf((char *)&a,sizeof(a));
....알맞은 처리...
}
else if (operation_header == 0x02)
{
structure b;
Socket->ReceiveBuf( (char*)&b,sizeof(b));
....알맞은 처리...
}
}
[참고]
비동기 소켓이므로 네트웍 Buffer에서 모든 Buffer를 읽어들이지 않을 경우
계속 ReadEvent가 지속적으로 발생하다가 어느 순간을 지나면 없어집니다.
수고엽.
도움이 되셨길.
|