Je n'ai pas trouvé de réponse exacte au problème que j'ai, donc je vais le demander de toute façon, et si je le faisais, en fait, postez une question qui est déjà été demandé, je m'excuse. Je fais une autre tâche de laboratoire pour ma classe Java, et pour le laboratoire de cette semaine, je dois créer un serveur UDP pour envoyer un objet Message sur le réseau, puis je dois faire un client UDP pour lire ce message. Le message lui-même est juste un objet qui a un message de chaîne et un nom d'utilisateur de chaîne; assez arbitraire. Le message est sérialisable. Maintenant, ce qui me pose un problème, c'est comment réellement envoyer cet objet de message à travers le réseau dans un DatagramPacket? Le constructeur actuel m'a mis dans un tableau d'octets, la taille du tableau, l'InetAddress, et le numéro de port. Ma dernière question est: comment trouver la taille du tableau, et comment transformer mon Message en octets à envoyer?Envoi d'objets à travers le réseau en utilisant UDP en Java
2
A
Répondre
7
Vous devez sérialiser votre classe de message dans un tableau d'octets. Ce sera le tableau d'octets que vous enverrez (et il sera facile d'obtenir la taille à ce moment-là).
Sur le client, vous souhaiterez désérialiser le tableau d'octets dans un objet Message. Java fournit un ensemble de classes pour gérer la sérialisation/désérialisation, et l'objet que vous voulez sérialiser doit implémenter l'interface "Serializable".
Quelque chose comme ça fonctionnerait:
// Serialize to a byte array
ByteArrayOutputStream bStream = new ByteArrayOutputStream();
ObjectOutput oo = new ObjectOutputStream(bStream);
oo.writeObject(messageClass);
oo.close();
byte[] serializedMessage = bStream.toByteArray();
Et la réception:
ObjectInputStream iStream = new ObjectInputStream(new ByteArrayInputStream(recBytes));
Message messageClass = (Message) iStream.readObject();
iStream.close();
Remarque, vous devez créer une interface commune qui est partagée entre le client et le serveur, cela permettre une sérialisation/désérialisation facile de la charge utile.
Ahah! C'est parfait, et exactement ce que je cherchais! Merci beaucoup! –