python - 如何修复客户端 - 服务器之间的反向命令管理?
问题描述
我正在构建一个远程管理工具包,以便使用 python 远程控制我的机器树莓派,但是我的代码有点相反。我不是发送命令,而是被树莓派控制
控制器
import socketserver
from datetime import datetime
import json, os
class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self):
print('{} - {} CONNECTED.'.format(datetime.now(), self.client_address))
while True:
self.request.send(bytes(os.popen(str(self.request.recv(1024),encoding='utf-8')).read(),encoding='utf-8'))
if __name__ == "__main__":
HOST, PORT = "localhost", 9999
server = socketserver.ThreadingTCPServer((HOST, PORT), MyTCPHandler)
try:
server.serve_forever()
except KeyboardInterrupt:
server.shutdown()
server.server_close()
客户
import socket
import json
client = socket.socket()
client.connect(('localhost',9999))
while True:
msg = input(">>: ").strip()
client.send(msg.encode("UTF-8"))
data = client.recv(1024) # Receiving 1024 bytes
if not data == b'successful':
print('resending')
print(data)
client.close()
解决方案
推荐阅读
- python - 如果其中一个值相同,则 Pandas 合并 2 数据帧
- json - 为每个 REST API 响应美化或返回漂亮的 JSON 响应
- c++ - 有没有办法将整数变量数组存储到另一个数组的单个元素中?
- mongodb - 带有 OR 条件的 MongoDB Atlas 搜索过滤器范围
- javascript - 通过 array_to_json 检索的 Postgresql 数组需要转换回 Javascript 中的对象数组
- r - 将宏添加到刻面标签中的字母
- android - 为什么 View 上的 `onDraw()` 方法接收可为空的画布
- python - 如何在 Python 中使用以太坊私钥签署消息?
- flutter - 如何在 Flutter 中使用本地通知打开某个页面?(不是 FCM)
- c++ - 如何为模板实例使用容器