2017-09-02 8 views
0

j'ai fait un écouteur de python (serveur) sur mes vps mais quand je donne le serveur et le client l'IP addreess de vps et le port 8585 cette erreur montre: erreur: socket.error: [Errno 32] Broken pipe i utilise la version python 2 vps i utilise la version python 3 dans mon PCPython socket.error: [Errno 32] Broken pipe

mon code serveur:

import socket 
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
ip = raw_input("ip : ") 
ip = str(ip) 
port = raw_input("port : ") 
port = int(port) 
s.bind((ip,port)) 
s.listen(5) 
while True: 
    c, addr = s.accept() 
    s.send("welcome !") 
    print (addr, "connected.")` 

client:

import socket 
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
HOST = input("HOST : ") 
HOST = str(HOST) 
PORT = input("PORT : ") 
PORT = int(PORT) 
s.connect((HOST,PORT)) 
buff = 1024 
data = s.recv(buff) 
print(data)` 

Répondre

1

Dans le serveur que vous:

c, addr = s.accept() 
s.send("welcome !") 

Vous devez faire la send sur la socket connectée au client et non sur la prise d'écouteur, à savoir qu'il devrait être c.send au lieu de s.send.

+0

merci j'ai fixé c.send(), mais à propos de la partie que vous avez dit "Vous devez faire l'envoi sur le socket connecté au client et non sur la socket écouteur" il envoie déjà le texte de l'écouteur au client !! : | Je ne vois aucun problème avec ça! –

+0

@MohammadrezaBahari: L'auditeur (s) n'est pas connecté à quoi que ce soit qui signifie que toute tentative de l'utiliser pour l'envoi échouera parce qu'il n'y a pas de destination connue pour les données. On peut seulement envoyer des données sur une socket connectée (c), c'est-à-dire celle retournée par 'accept'. –

+0

maintenant je l'ai eu, merci beaucoup. –