添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
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 n’a pu être établie car l’ordinateur cible l’a expressément refusée
Je ne vois pas ou est l'erreur, même avec un autre port j'ai cette erreur.
Merci.
Homme Profil pro
Architecte technique retraité
Inscrit en
Juin 2008
Messages
21 467
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : Architecte technique retraité
Secteur : Industrie

Informations forums :
Inscription : Juin 2008
Messages : 21 467
Points : 37 068
Points
37 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 n’a pu être établie car l’ordinateur cible l’a 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.
Homme Profil pro
Architecte technique retraité
Inscrit en
Juin 2008
Messages
21 467
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : Architecte technique retraité
Secteur : Industrie

Informations forums :
Inscription : Juin 2008
Messages : 21 467
Points : 37 068
Points
37 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.
Homme Profil pro
Architecte technique retraité
Inscrit en
Juin 2008
Messages
21 467
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : Architecte technique retraité
Secteur : Industrie

Informations forums :
Inscription : Juin 2008
Messages : 21 467
Points : 37 068
Points
37 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".