[英]Server Client Communication Python
服务器
import socket
import sys
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host= 'VAC01.VACLab.com'
port=int(2000)
s.bind((host,port))
s.listen(1)
conn,addr =s.accept()
data=s.recv(100000)
s.close
客户
import socket
import sys
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host="VAC01.VACLab.com"
port=int(2000)
s.connect((host,port))
s.send(str.encode(sys.argv[1]))
s.close()
我希望服务器接收客户端发送的数据。
尝试此操作时出现以下错误
客户端
回溯(最近调用最后):文件“Client.py”,第 21 行,在 s.send(sys.argv[1]) TypeError: 'str' 不支持缓冲区接口
服务器端
文件“Listener.py”,第 23 行,在 data=s.recv(100000) socket.error: [Errno 10057] 发送或接收数据的请求被禁止,因为套接字未连接并且(在发送数据报时使用 sendto 调用的套接字)没有提供地址
在服务器中,您使用侦听套接字来接收数据。 它仅用于接受新连接。
更改为:
conn,addr =s.accept()
data=conn.recv(100000) # Read from newly accepted socket
conn.close()
s.close()
您的行s.send
期望收到 stream object。您给它一个字符串。 用 BytesIO 包裹你的字符串。
您使用的是哪个版本的 Python? 从错误消息来看,我猜你无意中使用了 Python3。 你可以用 Python2 试试你的程序,它应该没问题。
尝试将客户端套接字更改为:
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.