Client/Serveur Python

Client/Serveur Python - Python - Programmation

Marsh Posté le 23-03-2016 à 21:09:10    

Bonjour tout le monde,
 
J'ai implémenté un client serveur en python pour tester une connexion. Le code que j'ai implémenté contient déjà l'adresse et le port mais je voudrais plutot qu'à l'exécution l'adresse et le port soient fournis en ligne de commande plutot que d'etre dans le code.
 
Exemple: ./serveur.py 127.0.0.1 1234 à taper en ligne de commande
 
Si quelqu'un peut m'aider, je n'y arrive pas.
 
serveur.c
 

Code :
  1. import socket
  2. Sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  3. Host = '127.0.0.1' # l'ip locale de l'ordinateur
  4. Port = 1234         # choix d'un port
  5. # on bind notre socket :
  6. Sock.bind((Host,Port))
  7. # On est a l'ecoute d'une seule et unique connexion :
  8. Sock.listen(1)
  9. # Le script se stoppe ici jusqu'a ce qu'il y ait connexion :
  10. client, adresse = Sock.accept() # accepte
  11. print "L'adresse",adresse,"vient de se connecter au serveur !"
  12. while 1:
  13.         RequeteDuClient = client.recv(255) # on recoit 255 caracteres grand max
  14.         if not RequeteDuClient: # si on ne recoit plus rien
  15.                 break  # on break la boucle
  16.         print RequeteDuClient,"\a"         # affiche les donnees envoyees


 
client.c

Code :
  1. import socket # on importe le module
  2. Sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # on cree notre socket
  3. # definition des informations :
  4. Host = '127.0.0.1'
  5. Port = 1234
  6. # on se connecte sur le serveur avec les informations ci-dessus
  7. # assurez-vous d'avoir mis en marche le serveur !
  8. Sock.connect((Host,Port))
  9. # On est connecte, on fait une boucle infinie d'inputs pour l'envoi des messages :
  10. while 1:
  11.         msg = raw_input('>> ')  # on rentre des donnees
  12.         Sock.send(msg) # on envoie ces donnees


 
Merci d'avance pour l'aide !

Reply

Marsh Posté le 23-03-2016 à 21:09:10   

Reply

Marsh Posté le 24-03-2016 à 16:01:56    

Elle est où la question?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 24-03-2016 à 16:22:32    

masklinn a écrit :

Elle est où la question?


 
Salut masklin !  
Ma question, je voudrais plutot qu'à l'exécution l'adresse et le port soient fournis en ligne de commande plutot que d'etre dans le code comme j'ai précisé ci dessus en donnant un exemple.

Reply

Marsh Posté le 24-03-2016 à 16:41:13    

Je pense que tu cherches sys.argv qui contient les paramètres fournis en ligne de commande.

Reply

Marsh Posté le 24-03-2016 à 17:17:20    

simon91 a écrit :

Salut masklin !  
Ma question, je voudrais plutot qu'à l'exécution l'adresse et le port soient fournis en ligne de commande plutot que d'etre dans le code comme j'ai précisé ci dessus en donnant un exemple.


cf reponse de rat de combat pour la version la plus basique (équivalent au char **argv en C), alternativement les modules "argparse" (stdlib), "optparse" (stdlib), "click" (externe) ou encore "doctopt" (externe) fournissent des interfaces de plus haut niveau pour définir et valider les paramètres en ligne de commande.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 24-03-2016 à 18:24:03    


Ok merci pour l'aide. Je crois que le problème est maintenant résolu ;)

Reply

Sujets relatifs:

Leave a Replay

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