Envoi d'un objet par sockets multicast

Envoi d'un objet par sockets multicast - Java - Programmation

Marsh Posté le 01-07-2007 à 21:18:39    

Bonjour,
 
  Je developpe actuellement une application dans laquelle j'utilise la communication réseau par sockets, avec le principe du multicast. Je pense avoir compris ce principe, et j'arrive à l'utiliser pour envoyer un message (chaine de caractères), avec le code suivant :

Code :
  1. String msg = "Hello";
  2. InetAddress group = InetAddress.getByName("228.5.6.7" );
  3. MulticastSocket s = new MulticastSocket(6789);
  4. s.joinGroup(group);
  5. DatagramPacket hi = new DatagramPacket(msg.getBytes(), msg.length(),
  6.                              group, 6789);
  7. s.send(hi);


Le problème qui se pose ici est que j'aurais besoin d'envoyer par la socket non pas une chaîne de caractères, mais un objet Java. Or je n'ai trouvé aucune méthode ou constructeur permettant d'encapsuler un objet dans le DatagramSocket (tous les constructeurs ne supportent apparemment qu'un tableau d'octets). J'ai vu que cela est possible par des simples sockets client-serveur, par un code ressemblant à :

Code :
  1. Socket serveur = new Socket(adresse, port);
  2. OutputStream sortie = serveur.getOutputStream();
  3. ObjectOutputStream oos = new ObjectOutputStream(sortie);   
  4. oos.writeObject(objet);
  5. oos.flush();


Mais je n'y ai pas trouvé d'équivalent dans le cas des sockets multicast. Quelqu'un connaîtrait-il une possibilité pour faire véhiculer des objets par des sockets multicast ?
Merci d'avance pour votre aide.

Reply

Marsh Posté le 01-07-2007 à 21:18:39   

Reply

Marsh Posté le 02-07-2007 à 09:25:02    

les stream en UDP ça promet ...
 
ByteArrayOutputStream

Reply

Marsh Posté le 20-07-2007 à 01:14:46    

J'ai eu peur quand j'ai lu socket et multicast. Je me suis dit que j'avais vraiment du louper un truc important.
Heureusement j'ai finalement lu Datagram....
 
Bon, Yakurena, si tu veux envoyer des objets Java sur le réseau, je te conseille des sockets TCP (unicast) et pas des Datagram.
Ensuite, tu devrais regarder du côté de la serialisation pour transformer ton objet en tableau de byte.
 
Taz<< c'est ironique ?? pq les streams multimedia se font généralement en UDP, c'est plus souple pr le temps réel. Evidemment le streaming sur HTTP tient davantage compte de la possibilité de transmettre sur tout l'internet.

Reply

Marsh Posté le 20-07-2007 à 09:25:39    

wapcamer a écrit :

Taz<< c'est ironique ?? pq les streams multimedia se font généralement en UDP, c'est plus souple pr le temps réel. Evidemment le streaming sur HTTP tient davantage compte de la possibilité de transmettre sur tout l'internet.


non c'est pas ironique. on parle niveau 4 là, après si tu veux faire du 7 et donner le sens que tu veux à ton bouzin ça te regarde. L'UDP c'est du non connecté, pas de flux.

Reply

Marsh Posté le 20-07-2007 à 15:20:42    

Non, Toi tu parles niveau 4.
Maintenant je n'ai jamais lu ou entendu que la notion de flux était reservé au niveau 4.  
Je ne vois pas non plus le rapport entre le mode connecté et la notion de flux.
Effetivement si j'ai envie d'appeler flux, un envoi continu de données, qu'elles soient applicatives ou autres, je le fais et je ne suis pas le seul.
 
Maintenant je suis d'accord, que dans le cas de Yak, il faut du TCP, pas pour faire ce que tu appelles du flux, mais pour garantir le contrôle d'erreur durant le transfert de données. Et là je crains que le multicast ne soit pas possible.

Reply

Marsh Posté le 20-07-2007 à 15:23:01    

wapcamer a écrit :

Non, Toi tu parles niveau 4.
Maintenant je n'ai jamais lu ou entendu que la notion de flux était reservé au niveau 4.  
Je ne vois pas non plus le rapport entre le mode connecté et la notion de flux.


Mais bordel, on cause de socket toussa, t'as perdu c'est tout

Reply

Marsh Posté le 20-07-2007 à 15:36:55    

Purée, j'ai même pas le temps d'éditer mon message...
 
J'ai perdu quoi? à part mon temps à discutailler avec toi sur le pb d'un autre???
Toi tu parles de socket TCP (donc point à point), et lui de multicast.
 
En plus, si tu prenais le temps de lire son pb, tu verrais qu'il parle de MulticastSocket.  
 
Au lieu de balancer des "t'as perdu", explique moi en quoi j'ai tort (si tu y arrives  :lol: )
 
Et éventuellement partage tes lumières pour l'aider à résoudre son pb.
 
 :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed