Socket: envoyer un message avec UDP sur internet

hautparleur Messages postés 213 Date d'inscription   Statut Membre Dernière intervention   -  
hautparleur Messages postés 213 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai trouvé ça:
https://wiki.python.org/moin/UdpCommunication
pour faire un chat P2P en python (3.4) avec UDP, ça marche en local (127.0.0.1), en réseau local (192.168.1.x) mais dès que j'utilise l'IP Internet ça ne marche plus.
J'utilise celle que me donne whatismyipaddress.com, peut-être que ce n'est pas la bonne?
Et laquelle mettre dans bind? Celle du réseau local ou Internet?

C'est étrange car tous les scripts que j'ai vu sur la communication en réseau (dans n'importe quel langage) ne fonctionnaient aussi qu'en local.
Pourriez-vous m'éclairer?

1 réponse

dsy73 Messages postés 9252 Date d'inscription   Statut Contributeur Dernière intervention   2 485
 
Salut

il te faut ouvrir le port sur ton pare-feu/routeur (box ADSL ?) et le rediriger vers ta machine locale. Pour le bind tu mets ton adresse IP 192.xxx dans ce cas là.

Ensuite il te faut une autre machine sur internet, c'est le client de ton serveur.
0
hautparleur Messages postés 213 Date d'inscription   Statut Membre Dernière intervention   15
 
J'ai ouvert le port sur la box (Livebox Orange), ça marche mais je ne peux envoyer qu'un paquet, je dois redémarrer le serveur pour en envoyer un autre.
0
dsy73 Messages postés 9252 Date d'inscription   Statut Contributeur Dernière intervention   2 485 > hautparleur Messages postés 213 Date d'inscription   Statut Membre Dernière intervention  
 
Je ne connais pas UDP mais je crois qu'il manque bcp de code dans l'exemple pour obtenir un serveur totalement fonctionnel.
UDP nécessite de gérer pas mal de choses, plus encore qu'avec TCP.

Tu devrais peut-être rechercher un framework qui implémente les couches nécessaires par dessus les sockets pour gérer tous les cas.
En ce moment j'utiliser Tornado + ZeroMQ par exemple.

Quel est ton objectif final ?
Pourquoi UDP ? Pourquoi en socket pur ?
0
hautparleur Messages postés 213 Date d'inscription   Statut Membre Dernière intervention   15 > dsy73 Messages postés 9252 Date d'inscription   Statut Contributeur Dernière intervention  
 
UDP parce que c'est plus simple, pas besoin de gérer les connexions (j'avais plein de bugs avec TCP).
Mon objectif est de faire un chat P2P, avec un client (pour l'envoi) et un serveur (pour la réception) sur chaque machine.
Je sais que ce n'est peut-être pas la meilleure façon de faire mais ça marche.
0
dsy73 Messages postés 9252 Date d'inscription   Statut Contributeur Dernière intervention   2 485 > hautparleur Messages postés 213 Date d'inscription   Statut Membre Dernière intervention  
 
Au contraire, dans ton cas UDP est plus complexe que TCP car tu dois ajouter une couche pour vérifier les données. Pour comprendre les conséquences de ton choix : https://fr.wikipedia.org/wiki/User_Datagram_Protocol
0
hautparleur Messages postés 213 Date d'inscription   Statut Membre Dernière intervention   15 > dsy73 Messages postés 9252 Date d'inscription   Statut Contributeur Dernière intervention  
 
Je sais que UDP ne vérifie pas l'intégrité des données mais j'ai essayé, ça marche, je n'ai encore jamais eu de problème avec ça.
De toute façon, les messages envoyés sont chiffrés de façon à ce que si un seul caractère manque ou a changé, on le sait.
0