Skip to content
Snippets Groups Projects
Commit b1468f94 authored by Cyril HECKMANN's avatar Cyril HECKMANN
Browse files

Le serveur peut enregistrer et renvoyer des messages au dernier utilisateur

parent 9a574aed
No related merge requests found
......@@ -43,10 +43,13 @@ namespace ClientUdp
EndPoint serverEP = new IPEndPoint(IPAddress.Parse(serverIP), serverPort);
while (true)
{
Console.WriteLine('\n' + "Message?");
string dat = Console.ReadLine();
Console.WriteLine('\n' + "Commande?");
int cmd = Convert.ToInt32(Console.ReadLine());
// Lecture message au clavier
ChatMessage m = new ChatMessage(Commande.GET, CommandeType.REQUETE, "Cyril\0"+dat);
ChatMessage m = new ChatMessage((Commande)cmd, CommandeType.REQUETE, "Cyril\0"+dat);
......
......@@ -5,14 +5,31 @@ using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ServeurUdp
{
class ServeurUdp
{
static void Main(string[] args)
static List<ChatMessage> Allmessages = new List<ChatMessage>();
static bool listen = true;
static void SendAllMsg(Socket servSocket, EndPoint dest)
{
foreach (ChatMessage cm in Allmessages)
{
// Encodage du string dans un buffer de bytes en ASCII
byte[] buffer = cm.GetBytes();
// Envoie du message
int nBytes = servSocket.SendTo(buffer, 0, buffer.Length, SocketFlags.None, dest);
}
Console.WriteLine("All messages send to " + dest);
}
static void Main(string[] args)
{
try
{
// ************************************************************** Initialisation
......@@ -35,23 +52,37 @@ namespace ServeurUdp
//************************************************************** Communications
while (true)
while (listen)
{
Console.WriteLine('\n'+"Attente d'une nouveau message...");
Console.WriteLine('\n' + "Attente d'une nouveau message...");
// Reception message client
EndPoint clientEP = new IPEndPoint(IPAddress.Any, 0);
EndPoint lastUser = new IPEndPoint(IPAddress.Any, 0);
byte[] buffer = new byte[1500];
int nBytes = serverSocket.ReceiveFrom(buffer, buffer.Length, SocketFlags.None, ref clientEP);
int nBytes = serverSocket.ReceiveFrom(buffer, buffer.Length, SocketFlags.None, ref lastUser);
ChatMessage receive = new ChatMessage(buffer);
// Decodage du buffer de bytes en ASCII vers un string
String msg = receive.pseudo + " : " + receive.message;
String msg = receive.data;
Console.WriteLine(receive.ToString());
Console.WriteLine("Nouveau message de "
+ lastUser
+ " (" + nBytes + " octets)"
+ ": \"" + msg + "\"");
// ========= Gestion de commande ===============
if (receive.commande == Commande.POST)
Allmessages.Add(receive);
else if (receive.commande == Commande.GET)
{
// !!!!!! Passage d'argument multiple à un thread !!!!!
Thread sendAll = new Thread(x => SendAllMsg(serverSocket,lastUser));
sendAll.Start();
}
// ==========================================
}
//************************************************************** Conclusion
// Fermeture socket
Console.WriteLine("Fermeture Socket...");
......@@ -66,5 +97,6 @@ namespace ServeurUdp
Console.ReadKey();
}
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment