[Python] Socket et interface réseau

Socket et interface réseau [Python] - Python - Programmation

Marsh Posté le 02-09-2015 à 10:11:26    

Salut à tous :hello:  
 
j'ai attaqué les socket en python pour un petit projet perso, mais je rencontre un probleme :
 
 

Code :
  1. from threading import Thread 
  2. import time 
  3. from socket import * 
  4. print "Creation socket..."
  5. try :
  6. chaussette = socket(AF_INET, SOCK_DGRAM)
  7. chaussette.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
  8. chaussette.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
  9. except:
  10. print 'erreur création socket'
  11. try:
  12. chaussette.sendto('Hello world', ('255.255.255.255', 8689))
  13. print "paquet UDP envoye"
  14. chaussette.close()
  15. except:
  16. print "erreur envoie de paquet"
  17. chaussette.close()


 
Donc comme vous pouvez le voir j'ai besoin d'envoyer un paquet UDP en Broadcast, ca pas de probleme.
 
Je travail sous Debian 8 et j'ai deux interface réseau sur mon pc portable
 

  • eth0
  • wlan0


Le probleme est que mon programme refuse catégoriquement d'envoyé ce paquet sur eth0 et cherche toujours à l'envoyé sur l'interface wifi ( meme éteinte et j'ai droit à une jolie erreur)
 
J'aimera savoir comment je peut contraindre mon code à utiliser l'interface filaire ( eth0 ou eth1 peut importe) plutot que la wifi.
 
Merci =)


Message édité par lysitheas le 02-09-2015 à 10:16:29
Reply

Marsh Posté le 02-09-2015 à 10:11:26   

Reply

Marsh Posté le 02-09-2015 à 13:46:59    

Bonjour !
 
Ce lien semble expliquer la raison du comportement, intimement lié à la façon dont les paquets sont routés par le système : http://stackoverflow.com/questions [...] interfaces
 
Si vous voulez que les envois à l'adresse 255.255.255.255 passent par l'interface eth0, il faut donc ajouter la route correspondante au niveau du système (voir la commande route add xxxx , je ne me souviens plus de la syntaxe exacte :)).
 
Bonne continuation

Reply

Marsh Posté le 02-09-2015 à 15:36:28    

mhm, mais j'aimerai que le programme python, le fasse tout seul,
 
Je ne peut pas demander à rajouter une route pour ca.
 
on ne peut pas manipuler les interface réseau avec python?

Reply

Marsh Posté le 07-09-2015 à 13:58:40    

lysitheas a écrit :

mhm, mais j'aimerai que le programme python, le fasse tout seul,

 

Je ne peut pas demander à rajouter une route pour ca.

 

on ne peut pas manipuler les interface réseau avec python?

 

Non. Après si le script est lancé en su/root tu peux faire (en python 2.X) des os.popen("route add XXX" ).read()), ca marchera mais ça n'est évidement pas portable sous windows.


Message édité par philippe06 le 07-09-2015 à 13:59:40

---------------
Aimer les femmes intelligentes est un plaisir de pédéraste. (Charles Baudelaire) - Vous vulgarisez :o (Jean-Kevin Dubois)
Reply

Marsh Posté le 07-09-2015 à 14:43:58    

lysitheas a écrit :

mhm, mais j'aimerai que le programme python, le fasse tout seul,
 
Je ne peut pas demander à rajouter une route pour ca.
 
on ne peut pas manipuler les interface réseau avec python?

Si tu es root, ça semble faisable:
http://stackoverflow.com/questions [...] g-a-socket
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 08-09-2015 à 16:30:15    

ca a l'air faisable oui, mais avec TCP.
j'aimerai bien en UDP :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed