cs_Tioneb
Messages postés193Date d'inscriptiondimanche 16 décembre 2001StatutMembreDernière intervention29 juillet 2015
-
25 mai 2007 à 19:08
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
28 mai 2007 à 09:18
Salut,
Dans, mon prog, j'utilise winsock pour établir une connexion entre 2 PC via internet et/ou LAN. Seulement voilà, si j'installe mon programme sur plusieurs PC d'un LAN, qui sont réliés à un routeur donc tous sur internet et par conséquent ont la même IP WAN (IP internet). Et maintenant si quelqu'un veut se connecter sur de ces PC, il va utiliser l'IP internet mais après, comment faut-il s'y prendre pour choisir le PC du LAN, puisque qu'il ont le même programme et le même numéro de port en écoute? Je cherche une autre solution que: Chaque PC à un port d'écoute. S'il n'y a pas d'autres solution (simple ou pas complexe), est-il possible que le client (celui qui veut se connecter) utilise un port (ex: 1234) et se connecte en utilisant un autre port distant (ex: 5678)?
Merci d'avance
--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 25 mai 2007 à 19:38
Salut
Si tes PCs (derrière ton routeur) sont des clients, pas de problème particulier puisque ce sont eux qui demanderont la connexion vers l'extérieur.
Si tu n'as qu'un seul serveur sur ton réseau privé qui doit être accessible depuis le net :
Il te suffit de créer une règle NAT sur ton routeur pour désigner l'IP (sur le réseau privé) de la machine qui répondra à une demande de connexion sur ton IP WAN sur le port 1234
Si tu as plusieurs PCs qui doivent répondre à des demandes de connexion entrantes :
- Soit tu configures des ports différents pour chaque serveur (ce que tu veux éviter)
- Soit tu leur donnes le même port en écoute et là, il faudra dire à ton routeur de laisser entrer les demandes sur ce port (Port Triggering) afin qu'il renvoie cette même demande côté réseau privé.
Mais lequel des PC répondra (car il ne pourra y en avoir qu'un seul) ? Ca va être au plus rapide ! --> Problème à venir (je ne suis même pas sûr que cela puisse marcher en TCP).
En UDP, la demande parcourt toutes les machines du réseau. Libre alors aux machines de répondre ou pas, alors qu'en TCP, il faudra impérativement qu'une machine réponde, TCP garantit que les données sont bien distribuées, ce qui n'est pas le cas d'UDP où la requète est envoyée mais sans "accusé réception".
Pour ta dernière question : Quand un Winsock se connecte à un serveur, on configure le port du serveur (destinataire), mais en général, on n'impose pas de port côté client (émetteur), on laisse faire le gestionnaire pour qu'il utilise le premier port disponible.
Si tu veux qu'un client extérieur fasse sa demande sur ton port 1234 et que ta machine côté réseau privé recoive cette même demande sur un autre port 5678, il suffit de le dire dans la configuration sur service NAT (port externe 1234, port interne 5678).
En final, je te suggère donc fortement d'utiliser des n° de ports différents pour chacune des machines devant servir de serveur.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)