Can';t使用Python通过套接字发送正确的值
我对一般使用Python和sockets还不熟悉(昨天才开始),所以在尝试设置TCP客户机和服务器时遇到了很多问题。我遇到的问题是,我想从服务器向客户端发送一个密钥。我知道服务器在打印出正确的密钥时正确地获取了密钥,但是它在新行中附加了一个0,当密钥被发送到客户端时,唯一显示的是“b'0” 由于缺乏经验,我几乎没有取得什么进展,在搜索了几个小时后,我仍然没有找到解决问题的方法 以下是服务器代码:Can';t使用Python通过套接字发送正确的值,python,sockets,tcp,client-server,python-3.3,Python,Sockets,Tcp,Client Server,Python 3.3,我对一般使用Python和sockets还不熟悉(昨天才开始),所以在尝试设置TCP客户机和服务器时遇到了很多问题。我遇到的问题是,我想从服务器向客户端发送一个密钥。我知道服务器在打印出正确的密钥时正确地获取了密钥,但是它在新行中附加了一个0,当密钥被发送到客户端时,唯一显示的是“b'0” 由于缺乏经验,我几乎没有取得什么进展,在搜索了几个小时后,我仍然没有找到解决问题的方法 以下是服务器代码: import os from socket import * #import the socket
import os
from socket import * #import the socket library
HOST = '' #We are the host
PORT = 29876
ADDR = (HOST, PORT)
BUFFSIZE = 4096
message = 'Hello, World!'
serv = socket( AF_INET,SOCK_STREAM)
serv.bind(ADDR,)
serv.listen(5)
print ('listening...')
conn,addr = serv.accept()
print (conn,addr)
print ('...connected')
key = os.system("cat ~/.ssh/id_rsa.pub")
conn.send(str(key))
print (key)
conn.close()
这是客户端代码
from socket import *
import os
HOST = 'xxx.xxx.xxx.xxx'
PORT = 29876
ADDR = (HOST,PORT)
BUFFSIZE = 4096
message = "Hello, World!"
cli = socket( AF_INET, SOCK_STREAM)
cli.connect(ADDR,)
data = cli.recv(BUFFSIZE)
print (data)
cli.close()
从我的代码中可以看出,我使用的是Python 3.3
非常感谢您对此问题提供的任何帮助。os.system()不返回进程的输出,而是返回值(即整数0
)
如果只想读取文件,请手动执行以下操作:
with open(os.path.expanduser("~/.ssh/id_rsa.pub")) as f:
key = f.read()
conn.sendall(key)
如果您需要流程输出,请阅读文档中的