Envoi/Réception de données

Résolu
vilfilou Messages postés 27 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 30 avril 2007 - 11 avril 2007 à 00:57
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 - 13 avril 2007 à 18:36
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

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
11 avril 2007 à 11:41
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"
3
vilfilou Messages postés 27 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 30 avril 2007
11 avril 2007 à 13:56
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
3
vilfilou Messages postés 27 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 30 avril 2007
11 avril 2007 à 18:08
Helpp!!!
ça urge!!!!
3
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
12 avril 2007 à 00:03
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"
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
12 avril 2007 à 00:04
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"
3
vilfilou Messages postés 27 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 30 avril 2007
12 avril 2007 à 00:27
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!!!
3
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
12 avril 2007 à 00:37
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"
3
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
12 avril 2007 à 00:44
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"
3
vilfilou Messages postés 27 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 30 avril 2007
12 avril 2007 à 18:09
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
3
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
13 avril 2007 à 00:58
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
3
tasshil Messages postés 4 Date d'inscription dimanche 8 avril 2007 Statut Membre Dernière intervention 12 avril 2007
12 avril 2007 à 22:14
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.
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
13 avril 2007 à 01:03
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"
0
vilfilou Messages postés 27 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 30 avril 2007
13 avril 2007 à 16:13
Okay, mais comment LIRE le message, décomposer ce byte en tableau??
MErci
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
13 avril 2007 à 18: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"
0
Rejoignez-nous