Socket: envoyer un message avec UDP sur internet

Fermé
hautparleur Messages postés 213 Date d'inscription mercredi 9 janvier 2013 Statut Membre Dernière intervention 13 mai 2016 - 11 déc. 2015 à 18:29
hautparleur Messages postés 213 Date d'inscription mercredi 9 janvier 2013 Statut Membre Dernière intervention 13 mai 2016 - 14 déc. 2015 à 22:20
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 dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 2 476
11 déc. 2015 à 20:39
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 mercredi 9 janvier 2013 Statut Membre Dernière intervention 13 mai 2016 15
12 déc. 2015 à 12:06
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 dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 2 476 > hautparleur Messages postés 213 Date d'inscription mercredi 9 janvier 2013 Statut Membre Dernière intervention 13 mai 2016
Modifié par dsy73 le 12/12/2015 à 13:43
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 mercredi 9 janvier 2013 Statut Membre Dernière intervention 13 mai 2016 15 > dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020
13 déc. 2015 à 21:21
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 dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 2 476 > hautparleur Messages postés 213 Date d'inscription mercredi 9 janvier 2013 Statut Membre Dernière intervention 13 mai 2016
14 déc. 2015 à 03:57
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 mercredi 9 janvier 2013 Statut Membre Dernière intervention 13 mai 2016 15 > dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020
14 déc. 2015 à 22:20
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