我必须使用带有子进程的check_output方法的套接字来发送ipconfig命令的输出。在python 2.7中,此过程曾经很容易,但是在python 3中,一切都更加复杂,因为它向我展示了UnicodeDecodeError。
这是发送字节的代码:
import socket
import subprocess
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(("localhost",7500))
m = subprocess.check_output('ipconfig')
client.send(m)
当然,不必将字节转换为要发送的字节,因为check_output的输出已经以字节格式提供了值。
但是由于接收器不允许解码,因此问题发生在接收器中。
接收数据的代码如下:
import socket
serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serv.bind(("localhost",7500))
serv.listen(1)
conex,direccion = serv.accept()
a = conex.recv(4096)
print(a.decode('utf-8'))
它显示了以下错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa2 in position 13: invalid start byte
有人知道如何解决吗?