Header

  1. View current page

    4Leaf Project

Profile_img_60x60_06
1 11

09/04/03

WSAAsyncSelect인줄 알았는데 사용하는 함수가 없다.

select로만 하는것이다.

thread하나 만들어서 select를 계속 돌면서 메시지를 검사한다..

그러다가 메인폼으로 PostMessage를 이용해서 Msg를 넘기는 것 같다.

일단 어디서 어떤식으로 Msg를 넘기는지 알아봐야할 것이다.

lparam과 wparam에도 뭐가 들어가는지도 함께..

 

wParam에는 콜백함수 포인터인것 같다.

lParam은 상위16bit와 하위16bit를 나눠서 쓰는것 같다.

 

예상되는 방식..

lParam = [MsgNo] [MsgType]

enum MsgType{

Manager = 4,

?? = 5,

?? = 6,

World = 8,

}

메시지가 4,5,6,8번이 있는것으로 확인됐다.

각각 용도는 앞으로 찾아봐야할것이다.

 

최초 접속 시도 및 모든 패킷의 처음 type부분이 잘못 된것 같다.

recv할때 맨앞에 1byte만 가지고 type을 체크하는 것이다.

어떻게 1byte를 recv했는데 다음 recv할때부터 제대로된 패킷이 들어오는지 이해가 안간다.. Flag옵션과 관계있을지도..

=> 플래그 옵션이 맞다. MSG_PEEK가 걸려있었다. 패킷이 들어있는지만 확인 하는것이다.

if(ax != bx || size == 4)
{

if(ax != 0xF)
{

if(size != 0x1FFC)
{

ecx = [esi+eax*4+40];

if(ecx != ebx) 
{

if(ax == bx)
{

 

}
}

else
{
}

}

}

if(size == 4 && type == 0) {

ProcessControlMessage(TConnection)

} else {

ProcessPacket

}

  • 최초 접속 시도

[C->S] [type]0000 [size]0004 [data]01 00 01 00
            [2byte:FLEAF_PKT.CONNECT] [2byte:Pkt Length] [01 00] [01 00]

[S->C] [02 00] [01 00]

 

History

Last edited on 04/03/2009 18:08 by skyilover

Comments (0)

You must log in to leave a comment. Please sign in.