Chat

Résolu
vilfilou Messages postés 27 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 30 avril 2007 - 2 avril 2007 à 22:34
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 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!!!

Merci d'avance

Nico , [mailto:vilfilou@hotmail.com vilfilou@hotmail.com]

14 réponses

gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
3 avril 2007 à 08:08
Salut,

Va jeter un petit coup d'oeil à cette source : http://www.javafr.com/codes/CHAT_20446.aspx

Ça devrait t'aider un peu Sinon, Google ou Developpez.com, rubrique GAQ

gmi19oj19
3
vilfilou Messages postés 27 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 30 avril 2007
3 avril 2007 à 11:42
C'est gentil, mais cette version est un peu trooooo complète et troooo compliquée pour moi!

Mon problème, c'est comment relié les 2 pc? (voir article au dessus)
3
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
3 avril 2007 à 12:01
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" />
<title>
</title>
<meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)" />
<meta name="AUTHOR" content="bob bob" />
<meta name="CREATED" content="20070403;11522900" />
<meta name="CHANGED" content="16010101;0" />
<style type="text/css">
<!--
@page { size: 21cm 29.7cm; margin: 2cm }
P { margin-bottom: 0.21cm }
-->
</style>
Salut,

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 ..."

WORA
3
vilfilou Messages postés 27 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 30 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
3

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

Posez votre question
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
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)

Client.java :

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.Socket;

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();

            //ferme tout
            pw.close();
            is.close();
            sockServeur.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();
            // 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();
    }
}

Server.java :

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

    private static final int    SERVER_PORT    = 12345;

    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 ..."

WORA
3
vilfilou Messages postés 27 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 30 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..

A cause de mon routeur?
Je suis perdu... SOS!!!
3
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
3 avril 2007 à 15:35
Salut,

possible si le routeur ne reroute pas les ports....

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
3
vilfilou Messages postés 27 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 30 avril 2007
3 avril 2007 à 16:32
Et je fais comment alors?
J'ai un routeur Dlink DSL 624t..
3
vilfilou Messages postés 27 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 30 avril 2007
3 avril 2007 à 17:04
encore une question, comment je fais ça moi???

J'ai la page de mon routeur, mais qu'entends-tu par router vers mon pc??
3
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
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.

gmi19oj19
3
vilfilou Messages postés 27 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 30 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?
3
vilfilou Messages postés 27 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 30 avril 2007
7 avril 2007 à 19:35
Allooo???
3
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
3 avril 2007 à 16:42
Salut,

tu vas sur la config de ton routeur et tu lui dis de router vers ton pc ...
Cf: la doc de ton routeur

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
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

gmi19oj19
0
Rejoignez-nous