Soket udp

Fermé
salim_Solution Messages postés 2 Date d'inscription dimanche 17 janvier 2016 Statut Membre Dernière intervention 18 janvier 2016 - Modifié par KX le 17/01/2016 à 17:04
salim_Solution Messages postés 2 Date d'inscription dimanche 17 janvier 2016 Statut Membre Dernière intervention 18 janvier 2016 - 18 janv. 2016 à 15:01
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 jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
18 janv. 2016 à 00:00
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 dimanche 17 janvier 2016 Statut Membre Dernière intervention 18 janvier 2016
18 janv. 2016 à 15:01
j'ai résoudre le problème , Merci bien Monsieur tarek_dotzero pour votre réponse
0