Soket udp

salim_Solution Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
salim_Solution Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
Bonjours à tous s'il vous plait je veux envoyer un numéro de type double (double message=1542.12) pas chaine de caractére type String(String message="Bonjour le monde!") au serveur , alors qui ce je peux faire et merci d'avance
voilà les classes

package project.udp;
import java.io.*; 
import java.net.*; 
import java.net.*;
import java.io.*;
class EnvoiDatagramme{
public static void main(String argv[])
throws SocketException, IOException, 
UnknownHostException{
String message = "Bonjour le monde!";
byte[] tampon = message.getBytes();
InetAddress adresse = null;
// recupère l’adresse IP de la machine marine   
adresse = InetAddress.getLocalHost();
System.out.println(adresse);
// crée l’objet qui stockera les données du datagramme à envoyer
DatagramPacket envoi=new DatagramPacket(tampon,tampon.length,adresse,12000);
// crée un socket UDP (le port est choisi par le système)
DatagramSocket socket=new DatagramSocket();
// envoie le datagramme UDP
socket.send(envoi);
                     }                      
                      }


//serveur


import java.net.*;
import java.io.*;
class ReceptionDatagramme 
{
public static void main(String argv[]) 
throws SocketException, IOException
{
    while(true){
byte[] tampon = new byte[1024];
String texte;
// crée un socket UDP qui attends des datagrammes sur le port 50000
DatagramSocket socket =new DatagramSocket(12000);
// crée un objet pour stocker les données du datagramme attendu
DatagramPacket reception = new DatagramPacket(tampon,tampon.length);
// attends puis récupère les données du datagramme
socket.receive(reception);
// récupère la chaîne de caractère reçue
// Note: reception.getLength() contient le nombre d’octets reçus
texte=new String(tampon, 0, reception.getLength());
System.out.println("Reception de la machine "+
reception.getAddress().getHostName()+
" sur le port "
+reception.getPort()+" :\n"+
texte );
}}}

1 réponse

tarek_dotzero Messages postés 817 Date d'inscription   Statut Membre Dernière intervention   122
 
Bonjour,

Si j'ai bien compris, vous essayé d'envoyer un seul "double", une seule information?

Vous pouvez envoyer une chaine de caractères, c'est boucoup plus simple et compatible avec l'esprit des Socket; vous puovez ne pas faire appel aux méthodes des Socket datagramme et la taille du buffer etc etc.

Pour convertir du "double" vers String avant d'envoyer :
double dmessage = 12345.23;
String smessage = dmessage + "";


Pour récuperer le double après la réception du côté serveur :
String messageRecu = in.readLine(); // in le BufferedReader créé à partir de l'InputStream de la Socket
double message = Double.parseDouble(messageRecu);
0
salim_Solution Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
j'ai résoudre le problème , Merci bien Monsieur tarek_dotzero pour votre réponse
0