All pastes #474007 Raw Edit

Someone

public text v1 · immutable
·published 2007-05-06 15:24 UTC
rendered paste body
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 = "";
            }
        }
    }
}