Witam
Kiedyś zacząłem pisać komunikator w oparciu o bibliotekę ggsharp jednakże była ona oparta o protokół 7.0 wiec wpadłem na pomysł napisania własnej obsługi nowszego.
Mój problem wygląda tak że po wysłaniu całej struktury dotyczącej logowania nie dostaje od serwera żadnego komunikatu.
Reciver = new BinaryReader(Stream);
Writer = new BinaryWriter(Stream);
Int32 Header;
while (connect.Connected)
{
Header = Reciver.ReadInt32();
switch (Header)
{
case Headers.WelcomeHeder:
{
MessageBox.Show(Reciver.ReadInt32().ToString());
Int32 seed;
seed = Reciver.ReadInt32();
login80 loginstr = new login80();
loginstr.uin = (Int32)number;
loginstr.language = new char[2];
loginstr.language = "pl".ToCharArray();
loginstr.hash_type = (byte)0x02;
var passwordBytes = Encoding.UTF8.GetBytes(password);
var seedBytes = BitConverter.GetBytes(seed);
var bytes = new byte[passwordBytes.Length + seedBytes.Length];
passwordBytes.CopyTo(bytes, 0);
seedBytes.CopyTo(bytes, passwordBytes.Length);
var sha1Hash = System.Security.Cryptography.SHA1Managed.Create();
sha1Hash.ComputeHash(bytes);
loginstr.hash = bytes.ToString().ToCharArray();
loginstr.status = (byte)0x0002;
loginstr.flags = (byte)0x00000001;
loginstr.features = (byte)0x00000007;
loginstr.external_ip = 0;
loginstr.external_port = 0;
loginstr.local_ip = 0;
loginstr.local_port = 0;
loginstr.image_size = (char)241;
loginstr.unknown1 = (byte)0x64;
loginstr.version_len = 35;
loginstr.version = new char[loginstr.version_len];
loginstr.version = "Gadu-Gadu Client build 10.0.0.10450".ToCharArray();
loginstr.description_size = 1;
loginstr.description = new char[loginstr.description_size];
loginstr.description[0] = 'A';
Writer.Write((Int32)0x0031);
Writer.Write((Int32)139);
Writer.Write(loginstr.uin);
Writer.Write(loginstr.language);
Writer.Write((byte)loginstr.hash_type);
Writer.Write(bytes);
for (int i = 0; i < 64 - bytes.Length; i++)
Writer.Write((byte)0);
Writer.Write(loginstr.status);
Writer.Write(loginstr.flags);
Writer.Write(loginstr.features);
Writer.Write(loginstr.external_ip);
Writer.Write(loginstr.external_port);
Writer.Write(loginstr.local_ip);
Writer.Write(loginstr.local_port);
Writer.Write(loginstr.image_size);
Writer.Write(loginstr.unknown1);
Writer.Write(loginstr.version_len);
Writer.Write(loginstr.version);
Writer.Write(loginstr.description_size);
Writer.Write(loginstr.description);
} break;
}
Gdy zmienię typ pakietu na 0x0019(ten od gg7.0) to dostaje przynajmniej pakiet o niepowodzeniu logowania natomiast tutaj nie dostaje nic. Na razie wielkość jest ustalona na sztywno ale zostanie to zmienione. Proszę o pomoc ponieważ nie wiem jak rozwiązać ten problem.