Connexion InterNet (avec routeur) en VB6 avec Winsock

Signaler
Messages postés
6
Date d'inscription
mercredi 17 décembre 2008
Statut
Membre
Dernière intervention
2 octobre 2013
-
Messages postés
176
Date d'inscription
mercredi 7 avril 2004
Statut
Membre
Dernière intervention
1 avril 2013
-
Bonjour à tous :)

J'ai écrit un petit programme, qui peut être serveur ou client (2 objets sockets utilisés) permettant de chater sur InterNet. L'idée est de faire un essai de programme capable de communiquer via le Net, pas tant de réécrire MSN :)

En saisissant l'adresse IP de celui qui joue au serveur (communiquée grâce à MSN justement) j'arrive à me connecter et à envoyer des chaînes de caractères. Et lui aussi ! Bref, trop contente de moi :)

Mais la où ça bloque, c'est quand l'on utilise une connexion WiFi (un routeur, en fait). Son LocalHost renvoi l'adresse IP donnée par le routeur. Impossible de se connecter en donnant ça comme RemoteHost (ou comme RemoteHostIp). On a la bonne adresse IP grâce au site "WhatismyIP", mais même la, pas moyen de se connecter. Je ne sais plus quoi mettre comme RemoteHost :(

J'espère que j'ai bien su exposer mon problème. J'espère aussi qu'il reste assez de monde pour répondre à une question sur un code écrit en VB6. J'ai essayée bien des trucs, mais rien n'a marché pour faire fonctionner mon programme avec des routeurs...

Dans tous les cas, bonnes fêtes à tous :)

13 réponses

Messages postés
282
Date d'inscription
lundi 29 septembre 2003
Statut
Membre
Dernière intervention
15 août 2012
2
Bonjour,

c'est l'adresse ip que tu recois de ton FAI (pas celle du routeur qui est souvent 192.168.0.1 par défaut)  que tu doit mettre dans le RemoteHost.

Il faut t'assurer que le port que tu utilises soit ouvert car par défaut, ils sont tous fermés à l'exception de ceux web (http, ftp, pop, smtp, etc)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Salut Jalene

Si la machine qui sert de serveur est derrière un routeur (dont un des rôles est de servir de parefeu), il faut demander au routeur de faire passer l'info vers l'intérieur, sinon, il bloquera tout simplement.
Donc, il faut que tu dises au routeur, dans les règles NAT, que, si une demande de connexion externe arrive sur le port X, il faut transférer l'appel à la machine interne portant l'adresse IP  A.B.C.D et, optionnellement, sur un autre port Y
Si tu n'es pas maître de la configuration du routeur, tu ne pourras rien faire, la majeure partie des ports étant bloqués : il est rare qu'une demande arrive de l'extérieur vers l'intérieur, que ce soit http, pop ou smtp.
Eventuellement avec le port ftp, mais le problème de la désignation de l'IP de la machine interne reste un problème : Il faut la déclarer dans le routeur.
Si le port ftp n'est pas bloqué, la solution peut consister à faire la connexion initiale avec le protocole UDP.
Les messages en UDP sont transmis à toutes les machines d'un réseau.
Ton serveur la recevra donc.
Les autres machines aussi, mais comme il y a peu de chance qu'elle soit elles aussi en écoute sur ce port, elle n'en tiendront pas compte.
Par contre, il ne peut pas y avoir de gestion d'erreur de connexion puisqu'il n'y a pas de compte rendu renvoyé à l'émetteur en UDP.
Ce sera à toi de :
- faire en sorte que la machine visée renvoie un accusé réception.
- faire un petit timer de "TimeOut" en cas de non réception de cet accusé.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
6
Date d'inscription
mercredi 17 décembre 2008
Statut
Membre
Dernière intervention
2 octobre 2013

Merci pour ces rapides réponses :)  Je me doutais d'une arnaque genre Firewall des routeurs.

Bon. J'avais déjà désactivé chez moi le firewall de la LiveBox (enfin, je pense). Mais ça ne marchait pas mieux. J'ai pas du désactiver le bon truc (ça s'appelait Firewall pourtant). Ca m'énerve. J'ai jamais demandé à protéger mes ports moi... Surtout à les protéger de mes propres programmes !

Je vais relire vos commentaires à tête reposée et je réattaquerai le problème ce week end :) Je ne suis pas sure d'avoir tout bien suivi de tes explications Jack (je suis pas blonde pourtant, mais bon...).

Par contre, comment je fait pour connaître l'adresse reçue de mon FAI ? C'est pas celle donnée par le site "Whatismyip" ?


Et je suis totalement maîtresse de la configuration de MA LiveBox (manquerai plus que ça).
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Re
Si si, ton adresse IP publique est celle fournie par ce site.
C'est cette adresse qu'il faut utiliser pour envoyer les requètes à ton routeur depuis une machine située sur le net.

Côté routeur : Ta machine est connectée au routeur par USB ou par ethernet ?
Je ne sais pas (pas l'expérience) si les dialogues machine-routeur par USB utilisent une adresse IP interne (réseau interne).
Je ne connais pas non plus la livebox : tu devrais pouvoir trouver des infos sur des sites/forums dédiés à ce FAI + la doc de ton routeur.
Essaye de trouver la notion de 'NAT' parmi les paramètres du routeur.

En général, sur les routeurs dignes de ce nom, il y aussi une rubrique nommée "DMZ".
Si tu actives cette option, le routeur deviendra une passoire et transmettra tout ce qui entre, vers ta machine.
Je te déconseille fortement cette option
si tu n'es pas sûr d'être bien protégée sur ta machine, et je ne parle pas que d'anti-virus, mais surtout de firewall (parefeu) digne de ce nom - mon avis est que le firewall de Windows est très nettement insuffisant puisqu'il laisse passer les requètes sortantes sans broncher, signe d'une activité souvent anormale.
Hélas, la majorité des firewalls ne sont plus compatibles avec les anti-virus actuels, ces derniers ayant pris la main sur les flux internet. Ces logiciels se disputant la priorité, cela provoque souvent des instabilité de Windows (et Microsoft n'y est pour rien)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Pour info, ton adresse IP sur le net commence par 81 et se termine par 193 (privilège d'admin)
Messages postés
6
Date d'inscription
mercredi 17 décembre 2008
Statut
Membre
Dernière intervention
2 octobre 2013

J'ai utilisé l'adresse fournie par Whatismyip, et ça n'a pas marché. Comme annoncé précédemment, je vais voir ça de plus près ce week end.

Sinon, merci encore pour toutes ces remarques que j'ai bien l'intention d'exploiter :) Je vous tiendrai au courant :)
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
salut,

un peu d'aide et d'explication par ici : http://www.vbfrance.com/doc/faq.aspx#common_nat

++

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Messages postés
176
Date d'inscription
mercredi 7 avril 2004
Statut
Membre
Dernière intervention
1 avril 2013
1
Bonsoir
Je suis très intéressé par ce post!
j'ai fait un jeu en réseau pour 4 joueurs dont un poste serveur avec des winsocks.
J'ai déjà essayé en réseau réel sur le net avec un ami, mais à l'époque nous avions tous les 2 une connexion par modem, là pas de problème pour connaitre IP du poste serveur que je transmettais, en loccurence par MSN.
Mais j'ai voulu essayé chez ma soeur qui a une connexion avec une freebox là j'ai eu la surprise de voir son adresse IP 192.168.0.1, donc pas intéressant à transmettre.
Si j'ai bien compris il n'est pour ainsi dire impossible de créer un serveur multi client avec des winsock, ne sachant pas quel type de connexion le poste serveur aura! Il pour est impossible de demander à l'utilisateur du jeu de commencer à bidouiller son firewall, de rechercher sa véritable adresse IP!
Alors quel autre moyen utiliser?en VB !
Messages postés
6
Date d'inscription
mercredi 17 décembre 2008
Statut
Membre
Dernière intervention
2 octobre 2013

Hélas, trois fois hélas, j'ai eu trop de choses à faire, et je n'ai pas pu tester toutes les choses interessantes dîtes ici, et donc faire avancer mon programme


Mais je ne pense pas que se soit impossible. MicroSoft y arriverait avec MSN, et pas nous ? Allons, allons...

Peut être qu'on utilise pas le bon objet. Il n'y a pas que Winsock, qui semble plutôt fait pour les réseaux classiques. On zap un truc a mon avis. Un simple détail peut être. Faut juste trouver quoi...

Heureuse de savoir que je ne suis pas seule à me galérer sur cette question. Si tu trouves la solution, post la vite ! Expliquez à la pauvre femme que je suis comment qu'on fait pour coder en VB6  

En ce moment, je manque de temps...
Messages postés
2
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
13 avril 2009

Bonjour,

Je tente un code VB6 avec winsock - qui, bien sûr fonctionne correctement sur le lan, mais ne donne aucune connection sur l'extérieur. Pourtant, lorsque je tente une connection (je suis serveur et le client se connecte sur l'IP de mon routeur), NETSTAT me dit que la connection (et NETSTAT me donne son IP!) est ESTABLISHED.
Dois-je en déduire que les machines sont bien connectées mais que le problème se situe au niveau du protocole à utiliser pour récupérer dans le programme les infos ? Une piste ?
Merci pour votre aide.
Messages postés
176
Date d'inscription
mercredi 7 avril 2004
Statut
Membre
Dernière intervention
1 avril 2013
1
Messages postés
2
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
13 avril 2009

Merci pour ce lien (qui manque peut-être d'exemples quand on n'y connait rien)

J'ai tenté d'aller dans la configuration du nat du routeur et introduit l'adrese IP "externe" dans le champ Global IP et celle de ma machine dans le champ du dessous.

Address Mapping
Global IP: 81.XXX.XXX.197 is transformed as multiple virtual IPs
from 192.168.2.XXX to 192.168.2.XXX

Malheureusement, cela coupe carément toute la connection. Une idée ?
Messages postés
176
Date d'inscription
mercredi 7 avril 2004
Statut
Membre
Dernière intervention
1 avril 2013
1
salut
je ne peux t'informer plus car moi même je n'ai pas de routeur j'ai un modem direct ce qui me permet d'installer facilement un serveur! mais je voudrais comme toi pouvoir installer un serveur derrière n'importe quel routeur!
vas voir ce site http://www.skyminds.net/2005/03/21/routeur-et-port-forwarding-la-redirection-de-ports/
télécharge son logiciel et essaye , tu me diras par la même occasion ce qu'il en est de son utilisation!
aussi tu peux essayer de télécharger ce petit logiciel http://dl.free.fr/qxlTBm8vL qui me permettra de savoir quelle valeur est renvoyée quand on utilise l'api "InternetGetConnectedState"
merci