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;
using System.IO;
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.
private delegate void TextBoxDelegateHandler(string str);
private TextBoxDelegateHandler TextBoxDelegate;
byte[] reception = new byte[256];
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.langochat.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);
}
}
private void UpdateData(string str)
{
ChatBox.Text += str;
}
private void 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(0);
}
}
private void ThreadAffichage()
{
try
{
Invoke(TextBoxDelegate, "< " + Encoding.ASCII.GetString(reception));
}
catch
{
Thread.CurrentThread.Abort();
}
Thread.Sleep(0);
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
byte[] envoi = Encoding.ASCII.GetBytes(textBox1.Text);
int i = socket.Send(envoi, 0, envoi.Length, SocketFlags.None);
ChatBox.Text += "> " + textBox1.Text + " (" + i + " octets envoyés)." + "\r\n";
textBox1.Text = "";
}
}
}
}