Envoi de tableau java [Résolu]

Messages postés
43
Date d'inscription
lundi 1 septembre 2008
Dernière intervention
6 septembre 2011
- - Dernière réponse : yoh42
Messages postés
43
Date d'inscription
lundi 1 septembre 2008
Dernière intervention
6 septembre 2011
- 6 sept. 2011 à 19:46
Bonjour a tous,

je viens vers vous car je rencontre actuellement un petit soucis.
Je souhaiterai envoyer un tableau (d'objet que je rempli manuellement pour des tests) d'un client vers un serveur.
La connexion entre le client et le serveur est opérationnelle mais pour la lecture et le transfert du tableau je patine un peu.

Voici mon code pour être plus précis :

Coté client :
//Méthode pour tester l'envoi d'un tableau
public static Object[] envoiInfoServeur() {
Object[] envoiinfosObject = new Object[8];
envoiinfosObject[0] = "123456";
envoiinfosObject[1] = "Test1";
envoiinfosObject[2] = "Test2";
envoiinfosObject[3] = "Test3";
envoiinfosObject[4] = "Test4";
envoiinfosObject[5] = "Test5";
envoiinfosObject[6] = "Test6";
envoiinfosObject[7] = "Test7";
return envoiinfosObject;
}
// Méthode qui permet d'envoyer un tableau au serveur
public static void EnvoiInfoAuServeur(int portServeur, Object[] value) {

Socket s;
OutputStream fluxsortie;

// On se connecte au ServerSocket du serveur
try {
Socket soc = new Socket("127.0.0.1", 3000);
portServeur =5001;
System.out.println(" ---> Connection réussie au serveur : ");
} catch (Exception e) {
System.out.println(" ---> Erreur en essayant de se connecter au socket du serveur : " + e);
}

// Creation du flux de sortie
try {
s = new Socket("127.0.0.1", portServeur);
System.out.println("127.0.0.1" + " " + portServeur);
fluxsortie = s.getOutputStream();
System.out.println(" ---> Envoi des infos en cours au serveur sur le port " + portServeur +"...");
OutputStream sortie = s.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(sortie);
oos.writeObject(eConf.envoiInfoServeur());
System.out.print("Les donn�es a envoyees sont : " + eConf.envoiInfoServeur());
oos.flush();

} catch (Exception e2) {
System.out.println(" ---> Erreur en creant le flux de sortie : " + e2);
}
}

Coté serveur :
//Recevoir le tableau d'objet depuis le client
class ReceptionObjetFromClient implements Runnable {

private int port;
private String fichier;
private ServerSocket sServeur;
private Socket s;
private OutputStream fluxsortie;
private InputStream in;
static Object[] value;

ReceptionObjetFromClient(int port, Object[] value) {
this.port = port;
this.value = value;
}

public void run() {
try {
sServeur = new ServerSocket(this.port);
System.out.println("port pour recevoir les donn�es du client : " + port);
s = sServeur.accept();
// Client connecte
System.out.println("Client connect�. Voici la socket : " + s );

// Reception du tableau
InputStream is = s.getInputStream();
ObjectInputStream ois=new ObjectInputStream(is);
System.out.print("Les donn�es recues sont : "+ value);
}catch (Exception e) {
System.out.println(" ---> Erreur en creant le flux de sortie : " + e);}
}
}

Je sollicite votre aide pour envoyer le tableau du client vers le serveur.
Merci d'avance de votre aide.

Cordialement,

YOhan
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
43
Date d'inscription
lundi 1 septembre 2008
Dernière intervention
6 septembre 2011
3
Merci
Re,

c'est bon je viens de résoudre mon problème !
Je sais pas si mon code est propre mais je reste ouvert à toutes suggestions.

Coté serveur :

//Recevoir le tableau d'objet depuis le client
class ReceptionObjetFromClient implements Runnable {

private int port;
private String fichier;
private ServerSocket sServeur;
private Socket s;
private OutputStream fluxsortie;
private InputStream in;
static Object[] value;

ReceptionObjetFromClient(int port, Object[] value) {
this.port = port;
ReceptionObjetFromClient.value = value;
}

public void run() {
try {
sServeur = new ServerSocket(this.port);
System.out.println("port pour recevoir les données du client : " + port);
s = sServeur.accept();
// Client connecte
System.out.println("Client connecté. Voici la socket : " + s );

// Reception du tableau
InputStream is = s.getInputStream();
ObjectInputStream ois = new ObjectInputStream(is);
for (int i = 0; i < 10; i++) {
System.out.println("Données reçues :" + (String)ois.readObject());
}
}catch (Exception e) {
System.out.println(" ---> Erreur en creant le flux de sortie : " + e);}
}
}

Coté client :

// Méthode qui permet d'envoyer un tableau au serveur
public static void EnvoiInfoAuServeur(int portServeur, Object[] value) {

Socket s;
OutputStream fluxsortie;

// On se connecte au ServerSocket du serveur
try {
Socket soc = new Socket("127.0.0.1", 3000);
portServeur =5001;
System.out.println(" ---> Connection réussie au serveur : ");
} catch (Exception e) {
System.out.println(" ---> Erreur en essayant de se connecter au socket du serveur : " + e);
}

// Creation du flux de sortie
try {
s = new Socket("127.0.0.1", portServeur);
System.out.println("127.0.0.1" + " " + portServeur);
fluxsortie = s.getOutputStream();
System.out.println(" ---> Envoi des infos en cours au serveur sur le port " + portServeur +"...");
OutputStream sortie = s.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(sortie);
for (int i = 0; i < eConf.envoiInfoServeur().length; i++) {
Object element = envoiInfoServeur()[i];
// traitement
System.out.print("Les données a envoyees sont : " + element);
oos.writeObject(element);
}
//oos.flush();
//System.out.print("Les donn�es a envoyees sont : " + eConf.envoiInfoServeur().toString());


} catch (Exception e2) {
System.out.println(" ---> Erreur en creant le flux de sortie : " + e2);
}
}

Cordialement

Merci yoh42 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de yoh42
Messages postés
43
Date d'inscription
lundi 1 septembre 2008
Dernière intervention
6 septembre 2011
0
Merci
Re-bonjour,

j'avance petit à petit avec mon problème.
J'arrive a envoyer la tableau mais le problème et que du coté serveur je lis que la première ligne. Dois je faire une boucle ? je pense que oui mais je ne sais pas comment gérer la taille du tableau pour les répétition dans la boucle.

Voici mon code pour plus de compréhension :

Coté client :

//Méthode pour tester l'envoi d'un tableau
public static Object[] envoiInfoServeur() {
Object[] envoiinfosObject = new Object[8];
envoiinfosObject[0] = "123456";
envoiinfosObject[1] = "Test1";
envoiinfosObject[2] = "Test2";
envoiinfosObject[3] = "Test3";
envoiinfosObject[4] = "Test4";
envoiinfosObject[5] = "Test5";
envoiinfosObject[6] = "Test6";
envoiinfosObject[7] = "Test7";
return envoiinfosObject;
}
// Méthode qui permet d'envoyer un tableau au serveur
public static void EnvoiInfoAuServeur(int portServeur, Object[] value) {

Socket s;
OutputStream fluxsortie;

// On se connecte au ServerSocket du serveur
try {
Socket soc = new Socket("127.0.0.1", 3000);
portServeur =5001;
System.out.println(" ---> Connection réussie au serveur : ");
} catch (Exception e) {
System.out.println(" ---> Erreur en essayant de se connecter au socket du serveur : " + e);
}

// Creation du flux de sortie
try {
s = new Socket("127.0.0.1", portServeur);
System.out.println("127.0.0.1" + " " + portServeur);
fluxsortie = s.getOutputStream();
System.out.println(" ---> Envoi des infos en cours au serveur sur le port " + portServeur +"...");
OutputStream sortie = s.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(sortie);
for (int i = 0; i < eConf.envoiInfoServeur().length; i++) {
Object element = envoiInfoServeur()[i];
// traitement
System.out.print("Les données a envoyees sont : " + element);
oos.writeObject(element);
}
//oos.flush();
//System.out.print("Les donn�es a envoyees sont : " + eConf.envoiInfoServeur().toString());


} catch (Exception e2) {
System.out.println(" ---> Erreur en creant le flux de sortie : " + e2);
}
}

Coté serveur :

//Recevoir le tableau d'objet depuis le client
class ReceptionObjetFromClient implements Runnable {

private int port;
private String fichier;
private ServerSocket sServeur;
private Socket s;
private OutputStream fluxsortie;
private InputStream in;
static Object[] value;

ReceptionObjetFromClient(int port, Object[] value) {
this.port = port;
this.value = value;
}

public void run() {
try {
sServeur = new ServerSocket(this.port);
System.out.println("port pour recevoir les donn�es du client : " + port);
s = sServeur.accept();
// Client connecte
System.out.println("Client connect�. Voici la socket : " + s );

// Reception du tableau
InputStream is = s.getInputStream();
ObjectInputStream ois = new ObjectInputStream(is);
System.out.println((String)ois.readObject());
}catch (Exception e) {
System.out.println(" ---> Erreur en creant le flux de sortie : " + e);}
}
}

Cordialement.
Yohan
Commenter la réponse de yoh42
Messages postés
43
Date d'inscription
lundi 1 septembre 2008
Dernière intervention
6 septembre 2011
0
Merci
Bonsoir,

en fait avec ce code je ne fais que le lire ce que le serveur reçoit.

J'aimerai en fait pouvoir lire mais aussi écrire dans un autre tableau sur le serveur ce que le serveur lui-même reçoit. Suis je compréhensible ?

Merci de votre aide.

Cordialement
Commenter la réponse de yoh42

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.