On utilise souvent les sockets de Java pour transmettre du texte. Cependant, grâce aux ObjectOutputStream
et ObjectInputStream
, il est tout aussi facile de transmettre tout type d'objets Java, tableaux compris.
L'exemple suivant démontre cette possibilité dans le cas d'un tableau d'entiers. Notez à quel point la classe Serveur
et la classe Client
sont proches.
/* ############################################################################ * * Serveur.java : transmission de tableaux Java via des sockets * Client.java * * Auteur : Christophe Jacquet, Supélec * * Historique * 2012-06-21 Création * * ############################################################################ */ import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.Arrays; public class Serveur { static final int port = 9999; public static void main(String[] args) throws Exception { ServerSocket s = new ServerSocket(port); System.out.println("Socket serveur: " + s); Socket soc = s.accept(); System.out.println("Serveur a accepte connexion: " + soc); ObjectOutputStream out = new ObjectOutputStream(soc.getOutputStream()); out.flush(); ObjectInputStream in = new ObjectInputStream(soc.getInputStream()); System.out.println("Serveur a cree les flux"); int[] tableauAEmettre = {7, 8, 9}; out.writeObject(tableauAEmettre); out.flush(); System.out.println("Serveur: donnees emises"); Object objetRecu = in.readObject(); int[] tableauRecu = (int[]) objetRecu; System.out.println("Serveur recoit: " + Arrays.toString(tableauRecu)); in.close(); out.close(); soc.close(); } }
/* ############################################################################ * * Serveur.java : transmission de tableaux Java via des sockets * Client.java * * Auteur : Christophe Jacquet, Supélec * * Historique * 2012-06-21 Création * * ############################################################################ */ import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.Socket; import java.util.Arrays; public class Client { static final String serverName = "localhost"; static final int serverPort = 9999; public static void main(String[] args) throws Exception { Socket socket = new Socket(serverName, serverPort); System.out.println("Socket client: " + socket); ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream()); out.flush(); ObjectInputStream in = new ObjectInputStream(socket.getInputStream()); System.out.println("Client a cree les flux"); int[] tableauAEmettre = {1, 2, 3}; out.writeObject(tableauAEmettre); out.flush(); System.out.println("Client: donnees emises"); Object objetRecu = in.readObject(); int[] tableauRecu = (int[]) objetRecu; System.out.println("Client recoit: " + Arrays.toString(tableauRecu)); in.close(); out.close(); socket.close(); } }