Никто не встречался с таким глюком?
Суть такова:
Осуществляю подключение через сокет (C# .NET), адрес и порт:
this.m_sHost = "login.icq.com";//sHost;
this.m_nPort = 12434;//nPort; - тут пробовал 5190, а это значение взял из Аси - разницы не было
.
Читаю через Socket.Receive()
Получаю нормальный FLAP-пакет с DWORD 0x00000001 — запрос на UIN/password
С помощью Socket.Send() Отсылаю FLAP:
Packet_ID 0x2A (FLAP)
Channel_ID 0x01 (Authorization)
Sequence (WORD)
Length (WORD)
Data (DWORD) 0x00000001 (Запрос на авторизацию)
Дальше идут TVL формата: Type (WORD), Length (WORD), Value (по-разному)
0x1, Length, UIN — кстати, в каком формате посылать? Каждый символ в своем байте, или перевести в шестнадцатиричный?
0x2, Length, Password (от балбы брал)
0x3, Length, "ICQ Inc. — Product of ICQ (TM).2000a.4.31.1.3143.85" — перевел сначала в CharArray, потом в Byte[]
0x16, Length, 0x010A
0x17, Length, 0x0004
0x18, Length, 0x001F
0x19, Length, 0x0001
0x1A, Length, 0x0C47
0x14, Length, 0x00000055
0x0F, Length, "en"
0x0E, Length, "us" — Эти значения не переводил, забил просто как строки
По идее сервер должен ответить пакетом, содержащим TLV-4 и TLV-8, поскольку был послан неправильный пароль.
В реальности же сервер не отвечает вообще. Во всяком случае, Socket.Receive() не получает больше ни одного байта.
В чем тут прикол? Может быть, я посылаю некорректные данные? Или не туда стучусь? Или сервер не может прочитать моих данных (возможно ли, что они просто в неправильном формате, и поэтому сервер молчит?)