Bonjour,
J'ai créé une petite bibliothèque très simple utilisant les socket compatible Windows et Linux. Pour la tester, j'ai créé un programme client et un serveur.
- Lorsque je lance le serveur et le client sur un seul PC, en demandant au client de s'y connecter en utilisant la boucle locale (127.0.0.1), les deux programmes communiquent bien.
- Lorsque je fais ce test sur 2 PCs reliés entre eux par réseau local, en donnant au client l'ip locale du PC où le programme serveur est lancé (192.168.0.10), là encore tout se passe parfaitement.
Par contre, dès que je met mon IP publique (82.125.170.50 par exemple), là impossible de connecter le client sur mon serveur (que les 2 programmes soient lancés sur le même PC ou non). J'ai essayé de configurer/désactiver mon firewall, j'ai testé sous Windows XP Pro, sur Ubuntu, mais rien n'y fait. Ma fonction connect() retourne l'erreur n°10061 pour Windows, et 111 (il me semble) sous Linux. J'ai aussi essayé de changer (pour le serveur) INADDR_ANY par inet_addr ("82.128.70.50"), mais j'ai l'erreur 10049.
J'ai aussi une Livebox Orange. Là encore j'ai ouvert au niveau du firewall le port 7779 (celui que j'utilise), mais toujours rien. Bref, je ne sais plus quoi faire :S
Pourriez-vous m'éclairer sur l'origine possible du problème? Une variable à modifier pour signaler au programme serveur que la connection se fera par l'ip publique? Une configuration de l'OS?
Voici le bout de code (du serveur) paramétrant le socket :
Pour le client :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 [...] m_sockfd = socket (AF_INET, SOCK_STREAM, 0); addr.sin_family = AF_INET; addr.sin_port = htons (port); //7779 addr.sin_addr.s_addr = INADDR_ANY; bind (m_sockfd, (struct sockaddr *) &addr, sizeof (addr)); [...]
Merci d'avance!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 [...] socklen_t addrLenght = sizeof (addr); m_sockfd = socket (AF_INET, SOCK_STREAM, 0); addr.sin_addr.s_addr = inet_addr ("82.128.70.50"); addr.sin_family = AF_INET; addr.sin_port = htons (port); // 7779 connect (m_sockfd, (sockaddr *) &addr, addrLenght); [...]
Partager