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
|
public Form1()
{
InitializeComponent();
endPoint = new IPEndPoint(IPAddress.Parse("192.168.1.77"), 80); // Ip et port de destination
}
Socket socket; // Nom de la fonction
IPEndPoint endPoint; // adresse et port de destination
byte[] buffer; // message qui sera envoyer
int Bouton = 0; // connexion/déconnexion
int size = 20; // Définie le nb de caractère max a envoyer
Byte[] rep = new Byte[32767]; // message réponce reçu
string stringData; // message réponce afficher
string TextaEnvoyer; // Text
int recv; // Nombre de caractère recu
private void button1_Click(object sender, EventArgs e)
{
if (Bouton == 0)//Connexion
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //Initialise la connexion udp
socket.BeginConnect(endPoint, new AsyncCallback(BeginConnect), socket);//Initialise réception asynchrone des messages
Bouton = 1;
}
else if (Bouton == 1)//déConnexion
{
Bouton = 0;//Déconnexion
socket.Shutdown(SocketShutdown.Both);//Ferme le protocole
}
}
public void BeginConnect(IAsyncResult ar)//Reception asynchrone des messages
{
socket = (Socket)ar.AsyncState;
socket.BeginReceive(rep, 0, size, SocketFlags.None, new AsyncCallback(CallbackMethod), socket);
socket.EndConnect(ar);
}
private void CallbackMethod(IAsyncResult ar)//Reception asynchrone des messages
{
Socket remote = (Socket)ar.AsyncState;
recv = remote.EndReceive(ar);
socket.BeginReceive(rep, 0, size, SocketFlags.None, new AsyncCallback(CallbackMethod), socket);
this.Invoke(new EventHandler(DisplayText));
}
private void DisplayText(object sender, EventArgs e)//Affiche les messages
{
stringData = Encoding.ASCII.GetString(rep, 0, recv);
richTextBox1.Text += stringData + System.Environment.NewLine;
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
socket.Close();
}
private void button2_Click(object sender, EventArgs e)
{
TextaEnvoyer = textBox1.Text;
buffer = Encoding.ASCII.GetBytes("<"+TextaEnvoyer+">");
socket.SendTo(buffer, endPoint); //buffer= message en byte, endPoint est l'adresse de destination
} |
Partager