Pourriez vous m'aider s'il vous plaît?
Je fais un client serveur pour m'entraîner sur les socket en python, le problème c'est que lorsque j'execute mon client et que le serveur est lancé la connexion est refusé. Voici mon code
client.py
Code :
Sélectionner tout
-
Visualiser dans une fenêtre à part
1 2 3 4 5 6 7 8 9 10 11
| import socket
params = ('127.0.0.1', 8808)
BUFFER_SIZE = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(params)
s.send("test")
data = s.recv(BUFFER_SIZE)
print('Datas : %s' % data)
s.close |
le serveur:
Code :
Sélectionner tout -
Visualiser dans une fenêtre à part
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import socket
params = ('127.0.0.1', 8808)
BUFFER_SIZE = 1024
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind(params)
s.listen(1)
conn, addr = s.accept()
print('Connexion acceptée: %s' % str(addr))
with conn:
while true:
data = conn.recv(BUFFER_SIZE)
if not data:
break
conn.send('Bonjour');
conn.close
s.close |
Quand mon serveur est lancé aucun problème mais quand je lance le client avec le python idle sous windows j'ai l'erreur
Code :
Sélectionner tout -
Visualiser dans une fenêtre à part
1 2 3
| client.py", line 7, in <module>
s.connect(params)
ConnectionRefusedError: [WinError 10061] Aucune connexion na pu être établie car lordinateur cible la expressément refusée |
Je ne vois pas ou est l'erreur, même avec un autre port j'ai cette erreur.
Merci.
Architecte technique retraité
Inscrit enJuin 2008Messages21 467Détails du profil
Informations personnelles :
Sexe :
Localisation : France, Manche (Basse Normandie)
Informations professionnelles :
Activité : Architecte technique retraité
Secteur : Industrie
Informations forums :
Inscription : Juin 2008
Messages : 21 467
Points : 37 068
Points37 068
Sélectionner tout -
Visualiser dans une fenêtre à part
1 2 3
| client.py", line 7, in <module>
s.connect(params)
ConnectionRefusedError: [WinError 10061] Aucune connexion na pu être établie car lordinateur cible la expressément refusée |
Je ne vois pas ou est l'erreur, même avec un autre port j'ai cette erreur.
Si le client veut se connecter à un serveur qui n'existe pas (encore), c'est un peu comme composer un numéro de téléphone qui n'est pas attribué: le réseau vous retourne une erreur.
A part, attraper l'erreur (avec un try...except...) et essayer à nouveau un peu plus tard (en espérant que le serveur sera alors démarré), il n'y a pas grand chose à faire.
note: ce que vous découvrez avec la programmation réseau, c'est que le réseau n'étant pas "fiable", des opérations qui se passent généralement sans problème plantent parfois... et savoir gérer les erreurs (que faire dans ce cas?) n'est pas toujours trivial.
Architecte technique retraité
Inscrit enJuin 2008Messages21 467Détails du profil
Informations personnelles :
Sexe :
Localisation : France, Manche (Basse Normandie)
Informations professionnelles :
Activité : Architecte technique retraité
Secteur : Industrie
Informations forums :
Inscription : Juin 2008
Messages : 21 467
Points : 37 068
Points37 068
Ce n'est pas ce que vous avez écrit dans votre premier post. Donc votre premier soucis est de vérifier les conditions dans lesquelles le problème se produit en arrivant à le reproduire.
J'ai trouvé, enfait il faut lancé deux idle python logique puisque si on execute les deux scripts quand on lance le script client le script serveur est fermé.
Merci de votre aide.
Architecte technique retraité
Inscrit enJuin 2008Messages21 467Détails du profil
Informations personnelles :
Sexe :
Localisation : France, Manche (Basse Normandie)
Informations professionnelles :
Activité : Architecte technique retraité
Secteur : Industrie
Informations forums :
Inscription : Juin 2008
Messages : 21 467
Points : 37 068
Points37 068
IDLE est un outil qui permet de développer vos programmes et comme tous ces outils là, il n'est pas "adapté" pour exécuter n'importe quels codes. Dit autrement, vous avez un problème lorsqu'on peut le reproduire en lançant les programmes "normalement".