vilfilou
Messages postés27Date d'inscriptionsamedi 24 mars 2007StatutMembreDernière intervention30 avril 2007
-
2 avril 2007 à 22:34
gmi19oj19
Messages postés545Date d'inscriptionlundi 10 mai 2004StatutMembreDernière intervention28 septembre 2011
-
7 avril 2007 à 20:46
Bonjour,
Voila, je souhaite réaliser un jeu de bataille navale en réseau..
J'ai pu grâce à vos codes m'inspirer pour créer le jeu (au premier stade).. mais en ce qui concerne le chat (c'est pas vraiment un chat, c'est un pc qui envoit à l'autre, le coup d'un joeur), je bloque! Je dois créer un client et un seveur qui communique.. entrer quelque part les adresses ip des 2 pc? une mm socket?...
En bref, je ne parviens pas à faire communiquer 2 machines!
Si quelqu'un pouvait m'aider à complèter mes codes ou si quelqu'un possède déjà ce type de code.. ce serait génial!!!
pour faire ce que tu veux
tu peux procéder de plusieurs façons :
1 - Chaque
clients sont des client/serveur soit le premier arrivé prend
la
place de serveur ensuite les autres
sont clients.
2 - Tu dédies un serveur gardant
un contexte des clients et des parties joué
(Ca risque d'être lourd à
gérer de plus faudra sûrement faire du multicast si tu ne veux
pas bouffer
toute la bande passante du serveur (cas pour un grand nombe de parties)).
dans tout les cas te faudra avoir une
config pour la saisie du port et de l'adresse ip.
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
vilfilou
Messages postés27Date d'inscriptionsamedi 24 mars 2007StatutMembreDernière intervention30 avril 2007 3 avril 2007 à 12:22
Je prends la solution 2.
Le "chat" (envoit de données info jeu) n'est prévu que entre 2 joueurs..
Je résume ce que je doit faire:
1. Créer un prog qui demande l'adresse ip de l'ordi correspondant
2. Un prog qui gére les envois/réceptions de message entre un joueur SERVEUR et un joueur CLIENT.
3. S'arranger pour que mon prog communique avec cet adresse ip et c'est la que je cale! Premièrement, j'ai un routeur, donc un adresse ip pour ce routeur et deuxièmement, j'arrive pas à faire connecté les 2 pc sur un mm serveur :s
HELP!
Je veux bien vos email et je vous envois mes codes... merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 3 avril 2007 à 14:39
Salut,
1 - Tu peux l'inclure dans l'application cliente c'est plus simple.
2 - Tu peux l'inclure dans l'application cliente c'est plus simple
3 - exemple client serveur (le plus basic possible)
public class Client {
private static final String SERVER_IP = "127.0.0.1";
private static final int SERVER_PORT = 12345;
public Client() {
try {
//création du socket pour la com. avec le serveur
Socket sockServeur = new Socket(SERVER_IP, SERVER_PORT);
Thread.sleep(1000);
//récupération du flux d'entrée (pour les lectures)
//lecture du message de bienvenue du serveur
InputStream is = sockServeur.getInputStream();
System.out.println(read(sockServeur.getInputStream()));
//récupération du flux de sortie (pour les écritures)
PrintWriter pw = new PrintWriter(sockServeur.getOutputStream());
//ecriture d'un message au serveur
pw.println("Salut à toi grand serveur");
pw.flush();
//méthode pour la lecture de données
private String read(InputStream is) throws IOException {
StringBuilder sbuilder = new StringBuilder();
boolean toRun = true;
while (toRun) {
int available = is.available();
// si il y a des data
if (available > 0) {
byte[] tmp = new byte[available];
is.read(tmp);
sbuilder.append(new String(tmp));
toRun = false;
}
}
return sbuilder.toString();
}
public static void main(String[] args) {
new Client();
}
}
public Server() {
try {
// création du serveur
ServerSocket server = new ServerSocket(SERVER_PORT);
// si un nouveau client arrive on lui dédie un thread
new ThreadClient(server.accept()).start();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Server();
}
// création d'un thread qui va s'occuper d'un client
private class ThreadClient extends Thread {
private InputStream isClient = null;
private PrintWriter pwClient = null;
public ThreadClient(Socket client) throws Exception {
// récupération du flux d'entrée (pour les lectures)
isClient = client.getInputStream();
// récupération du flux de sortie (pour les écritures)
pwClient = new PrintWriter(client.getOutputStream());
}
public void run() {
try {
// ici pour faire simple on envoi un message au client
// ensuite lecture de la réponse puis cassos ;)
// ecriture
pwClient.println("Salut, je suis le serveur");
pwClient.flush();
// lecture
System.out.println(read(isClient));
// Fermeture
isClient.close();
pwClient.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// méthode pour la lecture de données
private String read(InputStream is) throws IOException {
StringBuilder sbuilder = new StringBuilder();
boolean toRun = true;
while (toRun) {
int available = is.available();
// wait for new data
if (available > 0) {
byte[] tmp = new byte[available];
is.read(tmp);
sbuilder.append(new String(tmp));
toRun = false;
}
}
return sbuilder.toString();
}
}
}
pour le teste lance le serveur pouis le client...
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
vilfilou
Messages postés27Date d'inscriptionsamedi 24 mars 2007StatutMembreDernière intervention30 avril 2007 3 avril 2007 à 15:04
Merci bcp..
J'ai aussi un prog similaire un peu moins basique que le tiens, mais mon problème est :
PK quand j'essaie de le faire fonctionner sur deux ordi (un ami et le mien) il n'y a AUCUNE connection qui s'établit.. Pas avec mon prog, ni avec le tien..
gmi19oj19
Messages postés545Date d'inscriptionlundi 10 mai 2004StatutMembreDernière intervention28 septembre 20112 3 avril 2007 à 17:36
Salut,
Tu crées un service qui correspond au port que tu veux utiliser et tu définies une règle de parre-feu redirigeant les connexions entrantes sur ce port vers l'IP de ton PC.
vilfilou
Messages postés27Date d'inscriptionsamedi 24 mars 2007StatutMembreDernière intervention30 avril 2007 6 avril 2007 à 15:01
Dis, je ne voudrais pas mettre en doute tes talents de programmeur... mais il marche correctement ce prog sur un Vrai réseau (entre 2 pc).. car j'arrive pas à le faire marcher avec un copain!!! et on sait pas pk?
gmi19oj19
Messages postés545Date d'inscriptionlundi 10 mai 2004StatutMembreDernière intervention28 septembre 20112 7 avril 2007 à 20:46
Salut,
Tu es derrère un routeur, donc sur reseau local y a aucun problème MAIS si tu cherches à ommuniqué avec un poste distant, il faut que le port d'entrée ded tes données soit redirigé vers TON poste pour que ça ne reste pas derrière le routeur. Et si ton ami est derrière un routeur aussi, il doit faire de même.
PS : JavaFr c'est pas une hotline, on a pas forcement le temps de repondre dans la seconde