Envoi/Réception de données

[Résolu]
Signaler
Messages postés
27
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
30 avril 2007
-
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
-
Bonjour..

Je suis entrain de réaliser un jeu de bataille navale en réseau..

J'ai choisis dopèrer avec un Serveur qui initialise toutes les cases et un Client qui ne sait rien et qui doit donc demander au serveur!
A chaque coup, le serveur doit envoyer un message contenant l'état des 200 cases.. comment puis-je faire? le coder? Besoin d'idée et de code source..

Si vous avez une meilleure idée, je vous écoute!

Un tout grand merci d'avance!

14 réponses

Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
36
Salut:

Pourquoi ne pas envoyer une tableau d'entier ou chaque entier correspond à une constante bien déterminée.

exemple par hazzard:

public static final int MUR = 1; // symboliser une portion d'un mur
// ..



________________________________________________________________________________
A.B. : 
"Qui croit connaître tout ne sait rien"
Messages postés
27
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
30 avril 2007

Oui justement.. MAis comment on fait???

On peut envoyer des données sous forme tableau??

Si oui, j'aurais vraiment besoin d'un exxemble concret et corrrect!
Merci
Messages postés
27
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
30 avril 2007

Helpp!!!
ça urge!!!!
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
36
Salut:

Normalement dans le cas dex jeux 2D la scéne est représentée par un tableau à deux dimensions (matrice), qui à chaque case fait correspondre une constante symbolique pour chaque acteur du jeu.

Pour envoyer cette matrice via un réseau, il suffit de l'envoyer en tantque tableau unidimentionnel (vecteur).

X X X X X
X X X X X
X X X X X  --- envoyer ---> X X X X X ... X X X X X X
X X X X X
X X X X X

<-------> Largeur

chaque element de la matrice (i, j) sera representé dans le vecteur par l'indice (Largeur * i + j).


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
36
Salut:

Le reste revient à manipuler des objets de type InputStream et OutputStream.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
Messages postés
27
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
30 avril 2007

Oui..
Mais, comment faire?
J'ai un tab de 10*10
Pour l'envoi, le serveur envoi 10 lignes de 1 vecteur sous la forme {x,x,x,x,x,x,x,x,x,x} ? Ce sera un string.. pas un vecteur?

Pouvez-vous me donner un façon et surtout un exemple concret pour écrire ce message et l'interprêter correctement?

Merci bcp!!!
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
36
Salut:

Une matrice 10x10 sera envoyée en tantque vecteur de 10 * 10 = 100 éléments.
Il vaut mieux/ Il faut les envoyer tous en même temps.

Si tu code tes constantes sur 8 bits tu peux utiliser un byte [] ça te permet d'économiser beaucoup sur la bande passante car avec un objet String chaque symbole sera cod sur 16 bits qui est le double d'un byte et ça peut nuir aux performances de ton jeu.



________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
36
Salut:

Il y a la méthode OutputStream.write (byte [] array, int pos, int length)
et InputStream.read (byte [] array, int pos, int length)


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
Messages postés
27
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
30 avril 2007

Pourrais tu être encore plus précis... Merci!!!

Ou aide moi a complèter ceci...

Prog Serveur:

import java.net.*;
import java.io.*;


public class IEServeur {
final static int port = 9630;


public static void main(String[] args) {
 try {
  ServerSocket socketServeur = new ServerSocket(port);
  System.out.println("Lancement du serveur");
   
   while (true) { 
    Socket socketClient = socketServeur.accept();
    String message = "";
    System.out.println("Connexion avec : "+socketClient.getInetAddress());    
    BufferedReader in = new BufferedReader(
    new InputStreamReader(socketClient.getInputStream()));
    PrintStream out = new PrintStream(socketClient.getOutputStream());
    message = in.readLine();
    message= "bonjour"+ message;
    out.println(message);
    socketClient.close();
    }
    
  } catch (Exception e) {e.printStackTrace();}
 }
}

et le prog Client :

import java.net.*;
import java.io.*;


public class TestClientTCP {
final static int port = 9630;
static final String serveur = "127.0.0.1";


public static void main(String[] args) {
 Socket socket;
 DataInputStream userInput;
 PrintStream theOutputStream;
  try {
   
   //InetAddress serveur = InetAddress.getByAdress ("127.0.0.1");
   socket = new Socket(serveur, port);
   BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
   PrintStream out = new PrintStream(socket.getOutputStream());
   out.println(" SAluttt");
   System.out.println(in.readLine());
   
   } catch (Exception e) {e.printStackTrace();}
 }
}

Comment faire pour envoyer ce tableau et le l'interprêter correctement?

MERCI
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
36
Salut:

Pour envoyer le tableau du serveur au client on peut procéder ainsi

// Prog Serveur:

import java.net.*;
import java.io.*;

public class IEServeur {
final static int port = 9630;

public static void main(String[] args) {
 try {
  ServerSocket socketServeur = new ServerSocket(port);
  System.out.println("Lancement du serveur");
   
   while (true) {
    Socket socketClient = socketServeur.accept();
    String message = "";
    System.out.println("Connexion avec : "+socketClient.getInetAddress());    
    BufferedReader in = new BufferedReader(
    new InputStreamReader(socketClient.getInputStream()));
    PrintStream out = new PrintStream(socketClient.getOutputStream());
   

    // Envoyer un tableau de byte

    byte [] array = new byte [100];

    for (int i = 0; i < 100; ++i)

       array [i] = (byte)1;

    out.write (array, 0, 100);

    socketClient.close();
    }
    
  } catch (Exception e) {e.printStackTrace();}
 }
}

et le prog Client :

import java.net.*;
import java.io.*;

public class TestClientTCP {
final static int port = 9630;
static final String serveur = "127.0.0.1";
public static void main(String[] args) {
 Socket socket;
 DataInputStream userInput;
 PrintStream theOutputStream;
  try {
   
   //InetAddress serveur = InetAddress.getByAdress ("127.0.0.1");
   socket = new Socket(serveur, port);
   BufferedReader in = new BufferedReader(new        InputStreamReader(socket.getInputStream()));

    // Réception

    byte [] array = new byte [100];
    in.read (byte, 0, 100);

   PrintStream out = new PrintStream(socket.getOutputStream());
   out.println(" SAluttt");
   System.out.println(in.readLine());
   
   } catch (Exception e) {e.printStackTrace();}
 }
}

________________________________________________________________________________
A.B. :  "Dieu nous donne des mains, mais il ne bâtit pas les ponts
Messages postés
4
Date d'inscription
dimanche 8 avril 2007
Statut
Membre
Dernière intervention
12 avril 2007

st , svp c tr"s urgent, j'ai besoin d'aide .


mon projet consiste à créer des interfaces avec java devlopper qui permettent l'envoi et la réceotion des fichiers textes par FTP.


et merci d'avance.
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
36
Salut:

Tasshil >>

FTP:

http://www.javaworld.com/javaworld/jw-04-2003/jw-0404-ftp.html
http://www.javafr.com/gma/ftp
http://www.javafr.com/codes/APPLICATION-TRANSFERT-FICHIER-VIA-FTP_34193.aspx



________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
Messages postés
27
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
30 avril 2007

Okay, mais comment LIRE le message, décomposer ce byte en tableau??
MErci
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
36
Salut:

J'ai pensé que le message était juste pour faire un test.
Bon, je pense qu'il faut lire les données dans l'ordre de leurs émission en respectant le type envoyé:
(si tu envoie un byte du seveur alors tu lis un byte coté client, ... de même pour String et les autres types)

serveur:
envoyer message sous fome de String
envoyer tableau sous forme de byte []

client:

lire message sous fome de String
lire tableau sous forme de byte []



________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"