{filelink=8999}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
/***
* Une Application de Tchat avec
* DatagramPacke et DatagramPacket.
* Exécuter les deux programme séparement.
***/
// Client
class Client
{
public static void main(String[] args) throws Exception
{
// Création d'un socket datagramme
DatagramSocket client_sock = new DatagramSocket();
// Déclarer un tableau d'octets qui va contenir les données du datagramme
byte[] buff = new byte[1024];
DatagramPacket in_paquet = new DatagramPacket(buff, buff.length);
InetAddress host = InetAddress.getByName("localhost");
// Commencer la communication
while (true)
{
Scanner stdin = new Scanner(System.in);
System.out.println ("Tapez un message: ");
String msg_client = stdin.nextLine();
// Arrêter la Communication si le message='quit'
if (msg_client.equals("quit"))
break;
String msg_paquet = "Client a écrit: " + msg_client;
buff = msg_paquet.getBytes();
// Créer et envoyer le Paquet
DatagramPacket out_paquet = new DatagramPacket(buff, buff.length, host, 9999);
client_sock.send(out_paquet);
// Récuperer les messages reçus
client_sock.receive(in_paquet);
String msg_in = "Message Reçu de " + in_paquet.getAddress() + ", " + in_paquet.getPort() + ": "
+ new String(in_paquet.getData(), 0, in_paquet.getLength());
// Afficher le message
System.out.println(msg_in);
}
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
// Serveur
public class Server
{
public static void main(String[] args) throws Exception
{
// Création d'un socket datagramme au port 655
DatagramSocket serveur_sock = new DatagramSocket(655);
// Empaquetage des Données
byte[] buff = new byte[1024];
DatagramPacket in_paquet_s = new DatagramPacket(buff, buff.length);
System.out.println("Le serveur est lancé...");
// Entamer l'échange avec les clients
while (true)
{
serveur_sock.receive(in_paquet_s);
String msg_in_s = new String(in_paquet_s.getData(), 0, in_paquet_s.getLength()) + ", IP: "
+ in_paquet_s.getAddress() + ", Port: " + in_paquet_s.getPort();
System.out.println(msg_in_s);
Scanner stdin = new Scanner(System.in);
System.out.println ("Tapez un message: ");
String msg_serveur = stdin.nextLine();
String msg_paquetS = "Le Serveur a écrit: "+ msg_serveur;
buff = msg_paquetS.getBytes();
// Envoyer le message aux clients
DatagramPacket out_paquet = new DatagramPacket(buff, buff.length, in_paquet_s.getAddress(), in_paquet_s.getPort());
serveur_sock.send(out_paquet);
}
}
}