的Python socket.error:[错误32]破碎管
问题描述:
我在我的VPS 由蟒监听器(服务器),但是当我给服务器和客户端VPS和端口8585 的IP addreess此错误显示: 错误: socket.error: [Errno 32] Broken pipe
我用Python版本2在VPS 我在我的电脑使用Python版本3的Python socket.error:[错误32]破碎管
我的服务器代码:
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.")`
客户端:
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)`
答
在服务器中,你必须:
c, addr = s.accept() s.send("welcome !")
您必须连接插座上做send
到客户端,而不是在监听套接字,即它应该是c.send
而不是s.send
。
谢谢我修正了c.send(),但关于你说的部分“你必须在连接套接字上发送到客户端而不是在监听套接字上”,它已经从监听器发送文本到客户端了! :|我没有看到任何问题! –
@MohammadrezaBahari:监听器没有连接到任何意味着任何尝试使用它进行发送的尝试都会失败,因为没有数据已知的目标。人们只能在连接的套接字(c)上发送数据,即从“accept”返回的数据。 –
现在我明白了,谢谢你。 –