supernewbie, нет, дело совсем не в этом, ибо 1) я же дошел уже до EnterWorld. 2) Я написал, что анализирую пакеты сразу после того как их получаю и там уже сразу они слишком большие.
xkor, вот WMSOCK_RS_EVENT, в котором я принимаю пакеты (прошу не обращать внимания на всякие тупости, связанные с RecvPktCount и numpck, ибо это лишь тестовая версия
):
Код:
procedure TForm1.WMSOCK_RS_EVENT(var Msg: TMessage);
var
SockError: integer;
Len:integer;
s : string;
begin
//проверка на ошибки
SockError:=WSAGetSelectError(Msg.lParam);
if (SockError<>0) then begin
if SockError=10053 then RichEdit1.Lines.Add('RS was Disconnected')
else RichEdit1.Lines.Add('RS error: '+inttostr(SockError));
CloseSock(RS_sock);
Exit;
end;
//если нет ошибок:
case WSAGetSelectEvent(Msg.lParam) of
FD_Read: begin
FillChar(main_buff,Length(main_buff),0);
Len:=recv(RS_Sock,main_buff,MAX_PKT_SIZE,0);
s := IntToStr(numpck) + '.txt';
numpck := numpck + 1;
if numpck > 100 then numpck := 101;
// SaveBuf(s, len);
inc(RecvPktCount);
if RecvPktCount > 13 then RecvPktCount := 14;
if RecvPktCount <= 4
then LS_parser(main_buff,Len)
else GS_parser(main_buff,Len);
end;
FD_Close: begin
RichEdit1.Lines.Add('RS was Disconnected');
CloseSocket(RS_Sock);
end;
end;
end;
Собственно из этого всего главная строка:
Len:=recv(RS_Sock,main_buff,MAX_PKT_SIZE,0);
и вот main_buff (main_buff: array[0..MAX_PKT_SIZE-1] of byte) у меня и заполняется до 11 или 16 кбайт
Вот, кстати, лог пакетов с моей программы (первых 2 после EnterWorld, а точнее 1 и лишь маленький кусок второго).
Пакеты декодированы:
Код:
Server MSG, Length: 200 (0xC8)
-------------------------------------------------------
0x0000| C8 00 0C DE BF 50 10 AC BF 0F 00 00 00 00 00 08
0x0010| 15 00 00 C8 9D FF FF 5A F4 FF FF A8 F5 00 00 00
0x0020| 00 00 00 F4 01 00 00 16 01 00 00 84 00 00 00 58
0x0030| 00 00 00 84 00 00 00 58 00 00 00 84 00 00 00 58
0x0040| 00 00 00 84 00 00 00 58 00 00 00 00 00 00 A0 99
0x0050| 99 F1 3F EC 5F A8 52 B3 07 F0 3F 00 00 00 00 00
0x0060| 00 F0 3F 00 00 00 00 00 00 89 40 00 00 00 00 00
0x0070| 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00
0x0080| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0090| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x00A0| 02 00 00 00 00 00 00 00 F0 3F 00 00 00 00 00 00
0x00B0| 89 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x00C0| 00 00 01 01 00 00 00 00
Server MSG, Length: 1231 (0x4CF)
-------------------------------------------------------
0x0000| 1F 00 2F DE BF 50 10 C8 1D 00 00 88 9B FF FF 49
0x0010| F4 FF FF 08 15 00 00 C8 9D FF FF 4A F4 FF FF ED
0x0020| F9 4C 10 CD E5 8E D0 73 9A EC B7 B8 92 A0 55 49
0x0030| A6 40 85 FC 58 61 48 19 6A 13 36 C8 92 A0 CD 5D
0x0040| A6 40 49 52 A7 9E 3E EA 95 EC 0A B8 92 A0 95 5D
0x0050| A6 40 01 53 A7 9E 70 EB 95 EC 0A B8 92 A0 95 5D
0x0060| A6 40 01 53 A7 9E 70 EB 95 EC B6 B8 92 00 54 C4
0x0070| 57 7F 51 0C 0F CC 9B EC 65 D3 B6 B8 92 A0 CD 5D
0x0080| 88 00 BD 53 A7 3E B1 72 D7 AC B6 B8 92 A0 CD 5D
0x0090| A6 40 BD 53 A7 9E 29 EB 95 EC B6 B8 92 A0 CD 5D
0x00A0| A6 40 BD 53 A7 9E 28 EB 95 EC B6 B8 92 A0 CD 5D
0x00B0| A6 40 BD 53 A7 9E 28 EB 95 EC B6 B8 92 A0 CD 5D
0x00C0| A6 40 BD 53 A7 9E 28 C5 D5 EC B6 B8 32 39 54 1F
0x00D0| E6 40 BD 53 A7 9E 28 EB 95 EC B6 B8 92 A0 CD 5D
0x00E0| A6 41 BC 53 A7 9E 28 17 0B 8D 58 8C 4F 11 71 37
0x00F0| 68 17 FA F9 38 3F 64 0B 54 81 DF BC F2 FE 21 5D
0x0100| 98 E8 FB 79 38 3F 6C 19 54 81 03 13 0D 01 9F AE
0x0110| 67 17 47 F9 38 3F 34 19 54 81 4B 12 0D 01 D1 AF
0x0120| 67 17 47 F9 38 3F 34 19 54 81 4B 12 0D 01 D1 AF
0x0130| 67 17 FB F9 38 9F F5 80 A5 BE 1B 4D A5 53 3A A8
0x0140| 97 28 FB F9 38 3F 6C 19 7A C1 F7 12 0D A1 10 36
0x0150| 25 57 FB F9 38 3F 6C 19 54 81 F7 12 0D 01 88 AF
0x0160| 67 17 FB F9 38 3F 6C 19 54 81 F7 12 0D 01 89 AF
0x0170| 67 17 FB F9 38 3F 6C 19 54 81 F7 12 0D 01 89 AF
0x0180| 67 17 FB F9 38 3F 6C 19 54 81 F7 12 0D 01 89 81
0x0190| 27 17 FB F9 98 A6 F5 5B 14 81 F7 12 0D 01 89 AF
0x01A0| 67 17 FB F9 38 3F 6C 19 54 80 F6 12 0D 01 89 6E
0x01B0| F9 4C 0D CD E5 8E D0 73 9A 10 B1 B8 92 A0 25 4F
0x01C0| A6 40 B5 FC 58 61 48 19 6A EF AB 55 92 A0 CD 5D
0x01D0| A6 40 49 52 A7 9E 3E EA 95 10 0C B8 92 A0 95 5D
0x01E0| A6 40 01 53 A7 9E 70 EB 95 10 0C B8 92 A0 95 5D
0x01F0| A6 40 01 53 A7 9E 70 EB 95 10 B0 B8 92 00 54 C4
0x0200| 57 7F 51 0C 0F CC 9B EC 65 2F B0 B8 92 A0 CD 5D
0x0210| 88 00 BD 53 A7 3E B1 72 D7 50 B0 B8 92 A0 CD 5D
0x0220| A6 40 BD 53 A7 9E 29 EB 95 10 B0 B8 92 A0 CD 5D
0x0230| A6 40 BD 53 A7 9E 28 EB 95 10 B0 B8 92 A0 CD 5D
...............
...............
...............
...............
А вот лог первых 3 пакетов после EnterWorld в l2phx, который перехватывает мою прогу для того же соединения:
Код:
03810660417CE4E340 C800 0C DEBF5010ACBF0F000000000008150000C89DFFFF5AF4FFFFA8F5000000000000F4010000160100008400000058000000840000005800000084000000580000008400000058000000000000A09999F13FEC5FA852B307F03F000000000000F03F000000000000894000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000F03F000000000000894000000000000000000000000000000000010100000000
03251960417CE4E340 1F00 2F DEBF5010C81D0000889BFFFF49F4FFFF08150000C89DFFFF4AF4FFFF
03CA2B60417CE4E340 C800 0C AD9E4210F8980F00010000009814000038AFFFFF60F2FFFF8070000000000000F401000016010000BC00000058000000BC00000058000000BC00000058000000BC00000058000000000000A09999F13FEC5FA852B307F03F0000000000002E40000000A099994240000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002E40000000A09999424000000000000000000000000000000000010100000000
Как видно, в моей проге первый пакет показывает нормально, второй пакет в принципе тоже, а вот третий как-то накладывается на второй, причем в нем уже не найти начало, то ли я вообще хз...