1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
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.
private delegate void TextBoxDelegateHandler(string str);
private TextBoxDelegateHandler TextBoxDelegate;
byte[] reception = new byte[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);
}
}
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(100);
}
}
private void ThreadAffichage()
{
try
{
Invoke(TextBoxDelegate, Encoding.ASCII.GetString(reception));
}
catch
{
Thread.CurrentThread.Abort();
}
Thread.Sleep(100);
}
private void 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 = "";
}
}
}
} |
Partager