Je pensais que c'était un problème récurant ^^
Donc ma boucle de reception ->
Cliquez pour révéler
Cliquez pour masquer
public void Reception()
{
BufferRead Packet;
int separator = 0;
while (sock.Connected)
{
buffer = new Byte[8192];
len = sock.Receive(buffer);
if (len == 0)
{
ToWrite.WriteLog("Erreur lors de la communication.");
return;
}
do
{
Packet = new BufferRead(buffer, len, sock);
GestionPackets.GestionConnection(Packet, ToWrite);
separator += 2 + Packet.TailleDeTaille + Packet.Taille;
if (separator < len)
buffer = newBuff(separator);
} while (separator < len);
}
}
Ma fonction de gestion ->
Cliquez pour révéler
Cliquez pour masquer
public static int GestionConnection(BufferRead Packet, Writter ToWrite)
{
switch (Packet.Id)
{
case (1):
ToWrite.WriteLog("Connected.");
break;
case (3):
ToWrite.WriteLog("Hello connect message.\nEnvoie du packet 3.");
GPackets.packet3(Packet, ToWrite.Pseudo, ToWrite.Mdp);
break;
case (0):
ToWrite.WriteLog("Failed.");
break;
case (10):
GPackets.packet10(Packet);
break;
case (6314):
ToWrite.WriteLog("Credentials Acknowledgement Message.");
GPackets.packet40(Packet);
break;
case (6119):
ToWrite.WriteLog("Identification Account Force Message.");
break;
case (20):
ToWrite.WriteLog("Identification Failed Message.");
break;
case (21):
ToWrite.WriteLog("Identification Failed For Bad Version Message.");
break;
case (22):
ToWrite.WriteLog("Identification Success Message.");
break;
default:
ToWrite.WriteLog("Packet inconnu au bataillon : " + Packet.Id + ".");
break;
}
return (0);
}
Ma fonction packet3 ->
Cliquez pour révéler
Cliquez pour masquer
public static int packet3(BufferRead Packet, string pseudo, string mdp)
{
List<int> credentials;
RsaCRYPTER forCrypt;
BufferSend Send = new BufferSend();
Byte[] version = new Byte[10] { 0x00, 0x02, 0x07, 0x00, 0xED, 0x7F, 0x02, 0x00, 0x01, 0x01 };
string salt = Packet.ReadString();
Byte[] key = Packet.ReadBytes(Packet.ReadIntOn16Bits());
for (int i = 0; i < 10; i++)
Send.WriteByte(version);
Send.WriteString("fr");
Send.WriteString(pseudo);
Packet.ReadIntOn16Bits();
forCrypt = new RsaCRYPTER(salt + mdp, Packet);
credentials = forCrypt.Encrypt(key);
Send.WriteShort(credentials.Count);
foreach (Byte n in credentials)
Send.WriteByte((Byte)n);
Send.WriteByte(0);
Send.WriteByte(0);
Packet.Dofus.Send(Send.ToSend(4));
return (0);
}
La classe mon packet avant l'envoi semble correct, ce qui est bizarre, c'est que je n'ai pas de retour :x