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 IRC_Client { public partial class Dialogue : Form { # region Couleurs RTF const string JAUNE = @"\red255\green255\blue255"; # endregion private delegate void ReceiveBoxDelegateHandler(string str); private ReceiveBoxDelegateHandler ReceiveBoxDelegate; Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Thread t; CServer Server = new CServer("EpiKnet", "irc.epiknet.net", 6667); CClient Client = new CClient("Wiz", "guest", "tolmoon", "tolsun", "Ronnie Reagan"); public Dialogue() { InitializeComponent(); t = new Thread(new ThreadStart(GetBuffer)); ReceiveBoxDelegate = new ReceiveBoxDelegateHandler(UpdateData); ReceiveBox.Text = "Connexion à l'hôte " + Server.host + " sur le port " + Server.port + ".\r\n\r\n"; ReceiveBox.AppendText("Résolution de son adresse IP: " + Server.ip + ".\r\n\r\n"); IPEndPoint ipEndPoint = new IPEndPoint(Server.ip, Server.port); socket.Connect(ipEndPoint); t.Start(); ReceiveBox.AppendText("Envoi des identifiants de connexion:\r\n"); ReceiveBox.AppendText(" Pseudo: " + Client.nick + "\r\n"); ReceiveBox.AppendText(" Nom d'utilisateur: " + Client.username + "\r\n"); ReceiveBox.AppendText(" Hôte: " + Client.host + "\r\n"); ReceiveBox.AppendText(" Nom du serveur: " + Client.servername + "\r\n"); ReceiveBox.AppendText(" Nom réel: " + Client.realname + "\r\n"); byte[] envoi = Encoding.ASCII.GetBytes("NICK " + Client.nick + "\r\nUSER " + Client.username + " " + Client.host + " " + Client.servername + " :" + Client.realname + "\r\n"); try { socket.Send(envoi, 0, envoi.Length, SocketFlags.None); } catch (SocketException Ex) { MessageBox.Show("Erreur de connexion (Code" + Ex.ErrorCode + ")\n\n" + Ex.Message); } } private void UpdateData(string str) { ReceiveBox.Text += str; // Scrolldown ReceiveBox.SelectionLength = 0; ReceiveBox.SelectionStart = ReceiveBox.Text.Length; ReceiveBox.ScrollToCaret(); } private void GetBuffer() { byte[] buffer = new byte[256]; while (true) { try { socket.Receive(buffer, 0, buffer.Length, SocketFlags.None); Invoke(ReceiveBoxDelegate, Encoding.ASCII.GetString(buffer)); } catch {} Thread.Sleep(0); } } private void SendBox_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { byte[] envoi = Encoding.ASCII.GetBytes(SendBox.Text.TrimEnd() + "\r\n"); socket.Send(envoi, 0, envoi.Length, SocketFlags.None); ReceiveBox.AppendText(SendBox.Text); SendBox.Text = ""; } } } }