rendered paste bodyusing 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 = "";
}
}
}
}