问题描述
您好,我正在尝试通过python套接字将命令从一台计算机发送到另一台计算机。我能够成功连接到计算机并看到用户的IP地址,但是当我尝试从主机发送命令时,它给了我这个错误client_socket.send(command) TypeError:需要一个类似字节的对象,而不是'str'
这是我所有的代码:
import socket
import subprocess,os
print("#####################")
print("# Python Port Maker #")
print("# #")
print("#'To Go Boldy Where'#")
print("# No Other Python #")
print("# Has Gone #")
print("# By Riley #")
print("#####################")
host = input("What host would you like to use? ")
port = int(input("What port would you like to use? "))
server_socket = socket.socket(socket.AF_INET,socket.soCK_STREAM)
server_socket.setsockopt(socket.soL_SOCKET,socket.so_REUSEADDR,1)
server_socket.bind((host,port))
server_socket.listen(5)
print("\n[*] Listening on port " +str(port)+ ",waiting for connections.")
client_socket,(client_ip,client_port) = server_socket.accept()
print("[*] Client " +client_ip+ " connected.\n")
while True:
try:
command = input(client_ip+ "> ")
if(len(command.split()) != 0):
client_socket.send(b'command')
else:
continue
except(EOFError):
print("ERROR INPUT NOT FOUND. Please type 'help' to get a list of commands.\n")
continue
if(command == "quit"):
break
data = client_socket.recv(1024)
print(data + "\n")
client_socket.close()
这是给我的错误:
print(data + "\n")
TypeError: can't concat str to bytes
有帮助吗?谢谢
解决方法
不确定是否可以,但是您可以尝试以下方法:
<h2>Index</h2>
<div id="num-unresolved-tickets" class="panel-body">
<h2 class="text-center">
<b style="color:red"> @ViewBag.Message</b>
</h2>
</div>
这样,您的命令将以字节而不是字符串发送。
, client_socket
是socket object,并以bytes作为参数。
由于command
是字符串,请尝试client_socket.send(b'command')
将其用作字节对象。
编辑
client_socket.recv(1024)
返回bytes
对象,因此data
变量是字节对象。
尝试print(data)
或转换字节对象字符串print(data.decode('utf-8') + '\n')
。
此处使用utf-8是因为它是一种非常常见的编码,但是您需要使用数据实际所在的编码。
如果它不起作用,请尝试使用此answer。