nico1705 a dit : "C'est normal que tu ne reçoive pas les packets suivants, tu ne boucle pas ta reception donc tu t'arrête au premier packet lut :)"
Oui mais niveau code je vois pas comment faut faire, je sais faire une boucle, mais pour tout le système pour recevoir je sais pas trop :/
Voici ce que j'ai essayé de faire :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Threading;
namespace ClubPenguin
{
class Program
{
public static Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
static void Main(string[] args)
{
try
{
socket.Connect("204.75.167.165", 3724);
Console.ForegroundColor = ConsoleColor.Cyan;
Console.Write(" [Connexion]");
Console.ForegroundColor = ConsoleColor.Gray;
Console.Write(" Connexion au serveur d'authentification... ");
if (socket.Connected)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Ok!");
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Write("\n [Client]");
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine(" Vérification de la version avec celle du serveur... ");
// -- Packets --
byte[] policy = new byte[] { 0x3c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2f, 0x3e, 0x00 };
byte[] version = new byte[] { 0x3c, 0x6d, 0x73, 0x67, 0x74, 0x3d, 0x27, 0x73, 0x79, 0x73, 0x27, 0x3e, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x27, 0x76, 0x65, 0x72, 0x43, 0x68, 0x6b, 0x27, 0x72, 0x3d, 0x27, 0x30, 0x27, 0x3e, 0x3c, 0x76, 0x65, 0x72, 0x76, 0x3d, 0x27, 0x31, 0x35, 0x33, 0x27, 0x2f, 0x3e, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x3c, 0x2f, 0x6d, 0x73, 0x67, 0x3e, 0x00 };
// On décode en Ascii pour voir le contenu du packet à l'écran
String policy_ascii = System.Text.Encoding.ASCII.GetString(policy);
send(policy); // Méthode qui envoie le packet
// Affiche à l'écran le packet décodé qui a été envoyé
Console.ForegroundColor = ConsoleColor.Magenta;
Console.Write("\n [Packets]");
Console.ForegroundColor = ConsoleColor.Gray;
Console.Write(" Packet envoyé : ");
Console.WriteLine(policy_ascii);
String version_ascii = System.Text.Encoding.ASCII.GetString(version); // On décode en Ascii pour voir le contenu du packet à l'écran
send(version); // Méthode qui envoie le packet
rcv(); // Méthode qui récupère en boucle les packets
}
else
{
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("Echec!");
Console.ForegroundColor = ConsoleColor.Gray;
}
}
catch (SocketException sock_ex)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("[SocketException] " + sock_ex.Message);
Console.ForegroundColor = ConsoleColor.Gray;
}
}
public static void send(byte[] packet)
{
socket.Send(packet);
}
public static void rcv()
{
while (socket.Connected)
{
byte[] recvBuffer = new byte[3024];
int bytesReceived = socket.Receive(recvBuffer);
if (bytesReceived > 0)
{
byte[] data = new byte[bytesReceived];
Array.Copy(recvBuffer, 0, data, 0, bytesReceived);
Console.ForegroundColor = ConsoleColor.Magenta;
Console.Write("\n [Packets]");
Console.ForegroundColor = ConsoleColor.Gray;
Console.Write(" Packet reçu : ");
String data_decode = System.Text.Encoding.ASCII.GetString(data);
Console.WriteLine(data_decode);
}
}
}
}
}