服务器-客户端通信Python

服务器-客户端通信Python,python,sockets,client,Python,Sockets,Client,服务器 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.sock

服务器

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、 发送(sys.argv[1]) TypeError:“str”不支持缓冲区接口

服务器端

文件“Listener.py”,第23行,在 数据=s.recv(100000) socket.error:[Errno 10057]不允许发送或接收数据的请求 原因套接字未连接,并且(当使用
sendto call)未提供任何地址

您的线路
s。send
希望收到流对象。你在给它一根绳子。用BytesIO包装字符串。

在服务器中,使用侦听套接字接收数据。它仅用于接受新连接

更改为:

conn,addr =s.accept()

data=conn.recv(100000)  # Read from newly accepted socket

conn.close()
s.close()

您使用的是哪个版本的Python?从错误消息中,我猜您是无意中使用了Python3。您可以使用Python2尝试您的程序,它应该可以使用。

尝试将客户端套接字更改为:

s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

我想您可能必须将
str
转换为
字节
。我是否执行str.encode(sys.argv[1])??我这样做了,错误已经停止,但是数据没有传输。您仍然有问题吗?仍然在客户端给出相同的错误。服务器错误已得到解决。但是它们在
socket
对象上的名称和方法。是否执行str.encode(sys.argv[1])??我这样做了,错误已经停止,但是数据没有传输。Vinod-使用Python2尝试一下,然后了解差异。