Aide architecture réseau client / server en java

Bonjour, je me suis mis à programmer un genre de chat comme msn en java en utilisant JBuilder 2005. J’utilise une classe client pour créer chaques clients , une classe server et une classe manager qui est lance un thread pour chaque client. J’ai réussi à mettre en place ce système de communication en local en créant plusieur client et ca fonctionne bien , idem lorsque j’utilise les adresses ip des clients sur le réseau.Mais voila mes connaissances sont minces pour commencer à gérer une communication entre 2 pc sur “internet”.Si vous auriez l’aimabilité de m’éclairer sur la mise au point d’une telle communication je vous en serait très reconnaissant.Mes recherches éffectué sur les différents sites ne m’ont guère été d’une aide précise. Merci à vous !

j’ai eu un projet ou je devais faire communiquer 2 pc.
il fallait simplement ouvrir un (une?) socket. Ce que tu fais en local avec les ip, tu peux le faire en lan. J’ose émettre l’hypothèse qu’il faut que le port sur lequel tu communiques doit être ouvert et non bloqué par le firewall.

A noter que je pencherais plus pour de l’UDP s’il ne s’agit que de faire communiquer 2 PC.

Merci d’avoir répondu !

Enfait peut importe le nombre de PC qui communique entre eux , moi je suis le server , et je voudrais que par exemple KarLKox et jmgchouchou puisse se connecter chez moi afin de communiqué ( en ayant pris soin de leur donné le source pour démarrer le client).

J’ai tester en mettant les adresses ip mais ca ne fonctionne pas et j’ai pris soin de débloqué les ports également !

Je me demande vu que je suis derrière un routeur , si je dois dire à mes clients que pour venir touchez mon PC qui à une IP de 172.19.3.2 fourni via dhcp qu’il faut passé par la paserelle : 172.19.3.1) j’ai également une ip dynamique celle du routeur je suposse.Alors je sais pas trop quoi faire.

Ma table de routage :

Destination Netmask Gateway Interface
83.134.15.80 255.255.255.255 0.0.0.0 ppp-0
172.19.0.0 255.255.0.0 0.0.0.0 ethernet-0
127.0.0.0 255.0.0.0 0.0.0.0 loopback
0.0.0.0 0.0.0.0 0.0.0.0 ppp-0

Bonjour,
Les socket que tu as développé en LAN fonctionne de la même manière sur internet.
Ton problème est que tu as une ip privée": 172.19 … donc ton pc n’est pas visible depuis internet, tu ne peux pas t’en servir comme serveur internet, ou alors, il faut faire un reroutage depuis un serveur ayant son ip publique (donc visible sur intenet)

Déjà pour tester un ip publique, tu peux le faire depuis ce site:
http://www.dnsstuff.com/
exemple:
http://www.dnsstuff.com/tools/ping.ch?ip=66.36.247.82

la solution est:

  • soit de t’installer sur un poste ayant une ip publique (branché sur un ADSL par exemple, ou installer sur un serveur de là ou tu est)
  • soit comme je disait de faire un “reroutage” en fait une redirection depuis une application serveur: nous en Web, on utilisait un apache sur un serveur, pour rediriger vers un autre serveur HTTP dynamique (java pour info). Peut-être qu’apache sait rediriger autre chose que du HTTP, mais il faut déjà que tu définisse ta solution avant de te poser cette question.

voilà :wink:

Petites questions (Je n’y connais pas grand chose en réseau, j’aurais plutôt misé sur du TCP/IP -> Socket)
Comment être sûr qu’un message est arrivé?
Est-ce que le mode connecté n’est pas intéressant pour ce type d’appli (déconnexion?)

Oula UDP ? oO Tu n’as aucune trame de confirmation… Sockets sur TCP-IP reste la meilleur solution…

UDP = pour le streaming… sinon, peu pratique !

Merci deltree pour tes explications pourrais-tu m’éclairer d’avantages sur ta première solution ?

  • soit de t’installer sur un poste ayant une ip publique (branché sur un ADSL par exemple, ou installer sur un serveur de là ou tu est)

si j’ai bien compris il faut que je lance mon server java avec une ip public et non plus en localhost , comment puis-je faire cela ? pour ce qui tu server apache , on commencera seulement dans 2 semaine à voir l’introduction. Merci à toi

:jap:
Bien: pour que tu comprenne le problème, il faut voir l’architecture d’un réseau en IPV4 (le protocole normal sur l’internet actuel):
voir le schéma ici:
http://fr.wikipedia.org/wiki/Zone_d%C3%A9militaris%C3%A9e

Si tu est dans un réseau interne (d’une université ou autre) , tu fait partie des postes clients, tu n’as donc pas accès directement à internet, tu passe soit par un proxy, soit par du NAT (Network Address Translation: qui fait donc la “translation” entre ton addresse privée et l’adresse publique commune à tous les gens de ton réseau, et avec laquelle tu est visible sur internet)
ce mécanisme te permet de sortir sur internet, mais pas d’être visible en tant que serveur puisque cette IP publique n’identifie pas ta machine, mais une machine du DMZ.

Le mécanisme utilisant Apache s’appelle courament un reverse-proxy, qui fait donc le travail de pointer sur ta machine en fonction de certains critères (un pattern de l’url le plus souvent, quand on est en HTTP, le N° de port par exemple sinon). Mais il faut donc avoir accès à un serveur Apache situé dans la DMZ.

Le plus simple enfin pour tester ton application est de le faire depuis un accès ADSL si tu en as un, là , rien à configurer puisque tu fait réellement partie du réseau internet.
De la même façon, si tu installe ton application sur une machine faisant partie du DMZ, tu n’aura rien à configure, mais ça métonnerais que les admins de ton réseau te laisse l’accès au DMZ :smiley:

Ce n’est pas au niveau du serveur Java que tu pourra règler le problème, puisqu’il se situe au niveau du paramétrage réseau, et le serveur Java ne peut pas modifier sa propre IP: il se contente d’ouvrir les ports, acessibles non seulement en localhost, mais aussi pour toutes les machines de ton réseau.

Donc à voir avec les admin de ton réseau si j’ai été clair :wink:

:slight_smile: