Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CHAT - SERVEUR ET CLIENT(APPLET) - ASSEZ SIMPLE


Information sur la source

Catégorie :Applet Niveau : Initié Date de création : 01/12/2004 Vu / téléchargé: 36 405 / 39 166

Note :
8,32 / 10 - par 19 personnes
8,32 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (38)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Ce chat assez simple est destiné à ceux qui voudraient créer leur propre chat à partir d'un exemple.

Le serveur est composé de deux classes : Serveur.java et ServeurDialogue.java. Le client est une applet composée d'une seule classe : Client.java. Cette applet est contenue dans la page web index.html
Le client et le serveur communiquent directement par sockets. Pour voir plus précisemment le fonctionnement de ce chat, vous pouvez lire les commentaires présents dans les classes.

Pour tester ce chat chez vous en local :
- lancer le serveur à partir d'une fenêtre DOS ou équivalent, en lui précisant le numéro de port sur lequel les clients vont se connecter. Par exemple si on choisit le port 15000, taper: "java Serveur 15000"
- changer les paramètres du client dans la page index.html. Dans cette page on envoie les paramètres ipServeur et portServeur à l'applet (<param name="ipServeur" value="localhost"> et <param name="portServeur" value="15000">). Bien vérifier que ipServeur a pour valeur "localhost", et mettre comme valeur à portServeur le no de port qu'on a choisi pour le serveur, juste avant.
- ouvrir deux fois (ou plus) index.html avec un navigateur (ex: Internet Explorer), pour pouvoir simuler 2 personnes qui se parlent. Le navigateur doit être capable de lire les applets, avec au moins une version 1.2 de java je crois (car j'utilise des composants Swing)
- mettre un nom de login différent dans les 2 fenêtres, puis chatter...

Pour utiliser ce chat sur internet :
C'est plus compliqué, car le serveur de chat est un programme java, et peu d'hébergeurs accepteront de faire tourner votre programme java sur leurs machines (surtout pas les gratuits!). Donc si vous ne voulez pas dépenser d'argent, il faut héberger le serveur de chat sur votre propre ordinateur. Et du coup il faut également héberger le client de chat sur votre ordi, car pour une raison de sécurité les applets ne peuvent pas se connecter à un programme qui est sur une autre machine que leur hébergeur. Les étapes à faire sont donc :
- installer un serveur web quelconque sur votre ordinateur (ex : easyphp), dans lequel on mettra la page index.html et l'applet client.
- mettre l'adresse IP de votre ordinateur pour l'attribut ipServeur Dans la page index.html
- lancer le serveur de chat comme pour le test en local.
Les internautes pourront alors se connecter au chat en allant sur l'adresse http://votreAdresseIP:portDuServeurWeb/index.html . Dernière chose à savoir : il est probable que votre adresse ip soit différente à chaque fois que vous vous connectez à internet (cela dépend du fournisseur d'accès). Si c'est le cas il y a des sites qui proposent de vous donner une adresse permanente qui redirige vers votre adresse ip, en la mettant à jour dès qu'elle change (ex : http://60gp.ovh.net/~asipadan/ipdynamique/).
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de loscovic le 10/02/2005 23:45:23

bizarrrrrre! il ne marche pas ton truc!
il n'affiche rien du tout ou es ce ke je l'utilise mal

signaler à un administrateur
Commentaire de cyberdog94 le 11/02/2005 03:17:44

Ton code est vraiment bien écrit je l'ai pas testé mais il résoud mon problème qui était de redistribuer un message à tous les clients. Je cherche cependant un moyen de réaliser le chat sans utiliser ta classe ServeurDialogue. Le problème consiste à donner le moyen à un thread d'invoquer directement les méthodes de son créateur (ie la classe Serveur). Mais j'avoue qu'après quelques heures sur google j'ai vite vu que c'était assez compliquer. Au point que certains codeurs utilisent la fonction de sérialisation de Java (transfert d'objets entre classes par fichiers !) mais je suis sûr qu'il y a un moyen plus propre, évitant cette méthode ou du moins l'instanciation de X servers pour X clients. Si quelqu'un connait le procédé, merci de le faire savoir.

signaler à un administrateur
Commentaire de cyberdog94 le 11/02/2005 03:52:42

Added : je me réponds à moi même : en java il existe un moyen simple de communiquer entre threads :

PipedWriter out = new PipedWriter();
PipedReader in;
try {
    in = new PipedReader(out);
} catch (IOException e) { ... }

Le principe consiste à créer un tube de de communication (attention il est unidirectionnel) entre les threads. De même qu'un client et un serveur communiquent par des tubes (local,lan ou internet) :

fromClient = new DataInputStream client.getInputStream());
toClient = new PrintStream(client.getOutputStream());

un thread enfant PEUT dialoguer avec son thread père voir même avec ses thread frères. Donc pour résoudre le problème évoqué dans mon précédant post il "suffit" de créer à chaque connexion entrante d'un client un thread pour traiter le client ET un 2 tubes (pipe) pour remonter/descendre les infos entre les threads traitant les clients et le thread du serveur.

Enfin une autre méthode basée sur le RMI (Remote Method Invocation) permet à un Objet distant (client) d'invoquer des méthodes appartenant à une Classe distante (Serveur). Mais cela entraîne des problèmes de sécurité qui n'ont pas lieu dans la première méthode par pipes (les infos circulent entre des threads tournant uniquement sur le serveur).

Bref j'espère que ce post en aidera plus d'un (ie moi) !

Bon code !

signaler à un administrateur
Commentaire de nicolbo le 23/04/2005 19:28:19

Bonjour,

le code est très propre, en effet, mais j'ai le même problème que loscovic : impossible de le faire marcher. le bouton "envoyer" semble ne rien envoyer, et je n'arrive pas à corriger ce problème... Un coup de main est-il envisageable? ;)

merci !

signaler à un administrateur
Commentaire de paohlott le 23/04/2005 21:41:32

Salut Nicolbo,

j'ai restesté mon code en le téléchargeant depuis ce site, et je n'ai eu aucun problème. Je t'ai laissé un message perso pour qu'on puisse voir ce qui se pase chez toi.

PA

signaler à un administrateur
Commentaire de korchimustapha le 03/05/2005 20:18:32

Le boutton evvoyer ne fonctionne  pas.
qui peut m'aider

signaler à un administrateur
Commentaire de cyberdog94 le 03/05/2005 20:25:06

Toujours en me répondant à moi  même la solution évidente pour faire dialoguer les threads (qui gèrent chaque client) fils avec leur père (le serveur) il suffisait de passer en paramètre l'objet serveur !
Tellement simple que je n'y avais pas pensé.

signaler à un administrateur
Commentaire de legume_sylkis le 24/05/2005 14:58:36

Rien à redire, ca tourne impeccable... en interne.

J'essaie de le lancer sur un autre pc du réseau, j'arrive à accéder à l'applet, mais apparement l'applet n'arrive pas à se connecter au serveur. Pourtant ca marche trés bien en local sur un pc.

Je sais pas d'où vient le problème, si c'est de moi ou du code.

signaler à un administrateur
Commentaire de paohlott le 24/05/2005 19:13:10

Je dois humblement avouer que je n'ai pas encore testé mon code en réseau. Les informations que j'ai données pour le test en réseau sont une synthèse de d'informations de plusieurs sites, mais il y a peut-être une subtilité qui m'a échappé. Donc pour le moment je ne suis pas en mesure de t'aider, désolé. Peut-être peux-tu juste vérifier si un firewall bloque l'accès...

PA

signaler à un administrateur
Commentaire de cyberdog94 le 24/05/2005 21:34:16

LEGUME_SYLKIS :
"J'essaie de le lancer sur un autre pc du réseau, j'arrive à accéder à l'applet, mais apparement l'applet n'arrive pas à se connecter au serveur. Pourtant ca marche trés bien en local sur un pc."

1) PAOHLOTT a raison : vérifie avant de lancer les clients la connectivité au serveur par exemple par un telnet : depuis le client dans une fenetre DOS ecrit : "telnet ip_serveur port_serveur" si la connection échoue le problème ne vient donc pas du code. Dans le cas contraire, qui me parait peu probable vu que j'ai réussi, cela viendrait du code.

2) Dans ce genre de test il arrive souvent qu'on ai lancé le serveur puis qu'on l'ai arrêté brutalement : dans ce cas le serveur ne referme pas la socket et au redémarre il ne peut plus binder le port car il reste ouvert. Dans ce cas vérifie par la méthode 1 ci-dessus. Pour le refermer, le mieux et de désactiver/réactiver la carte réseau ou de relancer le serveur sur un autre port... mais il faut alors modifier la classe client en conséquence !

J'espère que ceci t'aidera. En tout avec ce code moi j'ai réussi -> fait le telnet !

A+

Bastien

signaler à un administrateur
Commentaire de legume_sylkis le 25/05/2005 08:32:16

Correction apportée, je retire ce que j'ai dit, ce chat fonctionne sans probleme. Et il est trés facilement modifiable pour ceux qui voudraient le completer un petit peu. Je débute en Java et j'ai appris pas mal de trucs en l'étudiant. Merci ^^.

Je met 9/10 ^^.

signaler à un administrateur
Commentaire de Celux le 26/05/2005 15:07:02

Le bouton envoyer ne marche pas non plus chez moi. est-ce que quelqu'un sait pourquoi?
Merci

signaler à un administrateur
Commentaire de Celux le 26/05/2005 15:07:23

Le bouton envoyer ne marche pas non plus chez moi. est-ce que quelqu'un sait pourquoi?
Merci

signaler à un administrateur
Commentaire de legume_sylkis le 27/05/2005 08:12:56

Il marche trés bien. Simplement si tu le fais en local sur ton pc, tu dois lancer le serveur. Si tu le fais à travers un réseau, tu dois lancer l'appli serveur sur le pc qui sert de serveur (forcement) et modifier un des paramètres de l'appel :

<param name="ipServeur" value="localhost">

Tu remplace "localhost" par le nom du pc sur lequel tourne le serveur. Si ton bouton "Envoyer" marche pas, c'est que le client arrive pas à communiquer avec le serveur.

signaler à un administrateur
Commentaire de Celux le 27/05/2005 12:07:14

c'est bon mon probleme est reglé, j'avais oublié de lancer le serveur!!

signaler à un administrateur
Commentaire de diana221284 le 30/05/2005 10:56:51

hi!
I'm trying to send a message but the "envoyer" button doesn't work.
in msdos appears "Serveur demarre" but doesn't appear    "client connecte" so I suppose there is something wrong vith the envoyer button.
thanks

signaler à un administrateur
Commentaire de cyberdog94 le 30/05/2005 14:47:59

Hi Diana,
Celux faced the same issue a couple days ago (in localhost) and discovered he forgot to start the server. Are you sure you are not in the same case ? Otherwise check the server availability simply by typing "telnet ip_of_the_server port_used_by_the_server" if you get a "connection refused" it means the server is either shut down or unreachable. BTW if you try this in localhost juste write "localhost" instead of "ip_of_the_server".
I hope it's gonna help you. Let me know if you need further explanations.

Bastien

signaler à un administrateur
Commentaire de cyberdog94 le 30/05/2005 14:50:37

sorry I forgot to mention you have to type telnet ip_of_the_server port_used_by_the_server" in a DOS-PROMPT.

signaler à un administrateur
Commentaire de stun le 08/07/2005 10:27:10

Tres bon code
assez simple mais il fallait qu il existe pour me permettre de progresser

bravo je t emet un 10

signaler à un administrateur
Commentaire de scat le 12/07/2005 23:37:38

tres bon exemple pour démarrer, bien écrit, simple, reste à le modifier pour gérer les ObjectOutputStream/ObjectInputStream.

signaler à un administrateur
Commentaire de rumss le 16/11/2005 01:19:00

salut!

ton applet est très sympa mais il semble que je aprtage le meme probleme au niveau de l'envoi de messages : je lance deux client sur ma machine (une fois le cerveur lancé), les deux se connecte et acces au chat cependant le premier envoi d messages le second repond puis le bouton envoyé ne repond plus
confli du fait qu'ils soient sur la meme machine?

merci d'avance ;)

signaler à un administrateur
Commentaire de opleynet le 27/01/2006 15:32:39

Bonjour moi qd je lance le client il ne s'affiche pas j'ai un rectangle tout gris

signaler à un administrateur
Commentaire de mobilicorpus le 06/04/2006 18:42:25

Bonjour
J'arrive à acceder à la page que par 127.0.0.1/index.html (localhost)
Y'a pas une solution pour que tous les ordis y parviennent ?

quelqu'un peut m'aider ? (j'ai essayé http://MonAdresseIP:80/index.html sans résultat)
Merci d'avance

Mobilicorpus

signaler à un administrateur
Commentaire de vegeto4 le 18/04/2006 15:11:01

Bonjour Mobilicorpus ta question est de savoir si tu peut accéder d'un autre ordi que le tien???? Car dans ce cas il est clair que lacalhost ne marchera pas. Si tu veut regarder ton index.htm d'un autre ordi n'oubli pas de lancer ton serveur sur ton ordi (serveur) est tape http://MonAdresseIPserveur/index.html (si tu a mis esy php le serveur et sur le port 80 par défo)

signaler à un administrateur
Commentaire de ducworld le 02/10/2006 15:10:04

Salut,
sympa ce petit chat car facilement modulable et adaptable,
félicitation.

signaler à un administrateur
Commentaire de axellengams le 01/11/2006 15:52:28

Merci pour cet utilitaire de chat! il est très sympa. Je ne l'ai testé qu'en local pour le moment mais je suis d'ores et déjà conquise! 10/10

signaler à un administrateur
Commentaire de dackvador le 28/12/2006 18:51:03

Petit probleme de conexiopn Serveur --- Client
Dans la page index.html lorque je modifie par mon ip de connexion tout marche on peut y accéder de internet mais lorsque je modifie et que je met l'url de no-ip ca marche plus... Si quelqu'un a une solution.
djkifranc@hotmail.com Merci.  

signaler à un administrateur
Commentaire de smasher81 le 08/02/2007 02:29:13

merveille! marci! C'est vraiment pratique de poster des travaux du genre pour le monde qui aime travailler avec des exemples .. merci et bonne prog!

signaler à un administrateur
Commentaire de zaii le 02/05/2007 09:26:59

Merci pour ce code, je cherchais justement à faire un sorte de IRC maintenant j'ai de quoi le réaliser si j'ai un probleme je viendrais faire coucou:) merci encore

signaler à un administrateur
Commentaire de ntic_safi le 22/12/2007 21:07:53

salut a tous,
j ai pas tester maintenant votre exemple Auteur "paohlott" mais la seule cause que je pense propose une ambguite c est le serveur.
et merci.

signaler à un administrateur
Commentaire de jaybeegamer le 10/01/2008 17:25:32

Salut,
Super ce truc, juste un truc méga bizarre : Pourquoi qd je fais une modification du texte ("Entrer un identifiant" par "login" par exemple) il ne me le prend pas en compte !!!!
Bien évidemment j'ai recompilé après puis j'ai aussi vidé le cache ...

signaler à un administrateur
Commentaire de jaybeegamer le 10/01/2008 17:35:14

j'avais oublié la note ;)

signaler à un administrateur
Commentaire de oliviertaylor le 18/01/2008 15:21:49

salut,

marche nickel, mais probleme pour les accentués, je suis un noob en Java

Olivier

signaler à un administrateur
Commentaire de visiorach le 13/03/2008 22:44:03

je n'arrive à lancer le serveur à partir de la fenêtre DOS. Est-il possible d'avoir plus de précision sur toutes les étapes pour le lancer.
J'ai un windows XP et je suis débutant en java.

signaler à un administrateur
Commentaire de forX le 20/01/2009 03:49:42 8/10

je suis débutant en java,
il est tu possible que le serveur se démarre en applet ou avec un cgi/php

signaler à un administrateur
Commentaire de tyah le 11/02/2009 04:51:14 6/10

Cool simple et rapide.
Nickel pour un chat local.

signaler à un administrateur
Commentaire de akramou1111 le 20/03/2009 15:20:14

je peux ouvrir ce projet sur éclipse telle qu'il est???????

signaler à un administrateur
Commentaire de akramou1111 le 20/03/2009 16:06:45

entre nous je ss débutant,,,j'ai ouvert un java projet sur netbeans et j'ai compilé Serveur.java,,,ça bien passé mais le pb est lorsque j'ouvre DOS et je tape "java Serveur 15000" ,,ça me génère des exception tq serveur est introuvable......."      comlment je procède alors,,,,c urgent..................merci

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.