socket UDP client/serveur
Bonjour je ne trouvais pas de rubrique ou poster, alors je poste ici.
Je viens de debuter dans la programmation reseau, et j'ai fait mes premiers sockets(client/serveur) via un protocole UDP.
Mais ca ne marche pas. Les 2sont sur la meme machine sa vient peut etre de la. Voici les codes:
serveur
Code:
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
| import java.net.*;
import java.io.*;
public class serveurUDP {
static int taille = 1024;
static byte[] tampon = new byte[taille];
static int port = 9332;
public static void main(String[] args)throws Exception {
DatagramSocket socket = new DatagramSocket(port);
String donne = "";
String message = "";
taille = 0;
System.out.println("serveur initialisé");
while(true) {
DatagramPacket paquet = new DatagramPacket(tampon, tampon.length);
socket.receive(paquet);
System.out.println("paquet recu de la part de: "+ paquet.getAddress());
taille = paquet.getLength();
donne = new String(paquet.getData(),0, taille);
message = "bonjour"+donne;
System.out.println("les données qui seront envoyées sont: "+ message);
DatagramPacket envoie = new DatagramPacket(message.getBytes(), message.length(), paquet.getAddress(), paquet.getPort());
socket.send(envoie);
}
}
} |
client:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import java.net.*;
public class client {
static int port = 9332;
static int taille = 1024;
static byte[] tampon = new byte[taille];
public static void main(String[] args)throws Exception {
InetAddress serveur = InetAddress.getLocalHost();
DatagramSocket socket = new DatagramSocket(port);
String message = "yoann";
DatagramPacket donneEnvoye = new DatagramPacket(message.getBytes(), message.length(), serveur, port);
socket.send(donneEnvoye);
DatagramPacket donneRecu = new DatagramPacket(tampon, tampon.length);
socket.receive(donneRecu);
String texte = new String(donneRecu.getData(), 0, tampon.length);
System.out.println(texte);
}
} |
et messages d'erreur:
Exception in thread "main" java.net.BindException: Address already in use: Cannot bind
at java.net.PlainDatagramSocketImpl.bind0(Native Method)
at java.net.PlainDatagramSocketImpl.bind(PlainDatagramSocketImpl.java:82)
at java.net.DatagramSocket.bind(DatagramSocket.java:368)
at java.net.DatagramSocket.<init>(DatagramSocket.java:210)
at java.net.DatagramSocket.<init>(DatagramSocket.java:261)
at java.net.DatagramSocket.<init>(DatagramSocket.java:234)
at serveurUDP.main(serveurUDP.java:12)
Comme vous pouvez le voir, c'est un truc tout con et tres basique, mais bon je debute.