Bonjour, je me suis mis à la programmation d'un petit client IRC
Il ressemble en beaucoup de points à tous ceux des débutants je n'en doute pas.

Il est assez délicat de gérer ces connexions avec les \r\n, en tout cas
pour ma part il semble que le problème se situe ici, en effet, je ne
reçois pas tous les messages que je devrais (Je fais le parallèle avec
XChat en journal brute pour voir ce qui diffère...)
Voici mon code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace Client_IRC
{
public partial class Dialogue : Form
{
// Création du socket de connexion au server.
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// Délégué pour la gestion de la ChatBox par le ThreadAffichage.
privatedelegatevoid TextBoxDelegateHandler(string str);
private TextBoxDelegateHandler TextBoxDelegate;
byte[] reception = newbyte[1024];
public Dialogue()
{
InitializeComponent();
TextBoxDelegate = new TextBoxDelegateHandler(UpdateData);
Thread t_reception = new Thread(new ThreadStart(ThreadReception));
Thread t_affichage = new Thread(new ThreadStart(ThreadAffichage));
socket.Connect(new IPEndPoint(Dns.GetHostAddresses("irc.epiknet.net")[0], 6667));
t_reception.Start();
t_affichage.Start();
byte[] envoi = Encoding.Default.GetBytes("NICK Tastee\r\nUSER guest tolmoon tolsun :Ronnie Reagan\r\n");
try
{
int i = socket.Send(envoi, 0, envoi.Length, SocketFlags.None);
ChatBox.Text = "Envoyé: " + i + " octets.\r\n";
}
catch(SocketException Ex)
{
MessageBox.Show("Erreur: " + Ex.Message);
}
}
privatevoid UpdateData(string str)
{
ChatBox.Text += str;
}
privatevoid ThreadReception()
{
while(true)
{
try
{
socket.Receive(reception, 0, reception.Length, SocketFlags.None);
}
catch(SocketException Ex)
{
MessageBox.Show("Connexion interrompue: " + Ex.Message);
Thread.CurrentThread.Abort();
}
Thread.Sleep(100);
}
}
privatevoid ThreadAffichage()
{
try
{
Invoke(TextBoxDelegate, Encoding.ASCII.GetString(reception));
}
catch
{
Thread.CurrentThread.Abort();
}
Thread.Sleep(100);
}
privatevoid textBox1_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.Enter)
{
byte[] envoi = Encoding.Default.GetBytes(textBox1.Text + "\r\n");
socket.Send(envoi, 0, envoi.Length, SocketFlags.None);
textBox1.Text = "";
}
}
}
}
Je n'obtiens que ce message:
Je n'obtiens que ceci...
Envoyé: 55 octets.
:toulouse2.fr.epiknet.org NOTICE AUTH :*** Looking up your hostname...
:toulouse2.fr.epiknet.org NOTICE AUTH :*** Checking ident...
Peut-être que je fais erreur du côté de l'encodage...mais je ne sais trop comment la résoudre
Merci de votre aide,
Cordialement
