服务器客户端通信的Python(Server Client Communication Python

2019-09-16 07:46发布

服务器

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])类型错误: 'STR' 不支持缓冲区接口

服务器端

文件“Listener.py”,第23行,在数据= s.recv(100000)socket.error:[错误10057],发送或接收数据的请求被判BEC A使用套接字没有连接和(数据报发送时使用sendto调用),地址插座供给

Answer 1:

在服务器中,使用监听套接字接收数据。 它只是用来接受新的连接。

改成这样:

conn,addr =s.accept()

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

conn.close()
s.close()


Answer 2:

你行s.send能接收流对象。 你给它一个字符串。 总结与BytesIO您的字符串。



Answer 3:

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



Answer 4:

试图更改客户端套接字:

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


文章来源: Server Client Communication Python