import socketserver
import os
def execCmd(cmd):
r = os.popen(cmd)
text = r.read()
r.close()
return text
# 自定义类来实现通信循环
class MyTCPHandler(socketserver.BaseRequestHandler):
# 必须写入handle方法,建立链接时会自动执行handle方法
def handle(self):
while True:
try:
data = self.request.recv(1024)
if not data: break
print('->client:', data)
#os.system(data.decode('utf-8'))
macd = execCmd(data.decode('utf-8'))
self.request.send(macd.encode('utf-8'))
except ConnectionResetError:
break
self.request.close()
if __name__ == '__main__':
server = socketserver.ThreadingTCPServer(('127.0.0.1', 8080), MyTCPHandler)
server.serve_forever() # 链接循环
import os
def execCmd(cmd):
r = os.popen(cmd)
text = r.read()
r.close()
return text
# 自定义类来实现通信循环
class MyTCPHandler(socketserver.BaseRequestHandler):
# 必须写入handle方法,建立链接时会自动执行handle方法
def handle(self):
while True:
try:
data = self.request.recv(1024)
if not data: break
print('->client:', data)
#os.system(data.decode('utf-8'))
macd = execCmd(data.decode('utf-8'))
self.request.send(macd.encode('utf-8'))
except ConnectionResetError:
break
self.request.close()
if __name__ == '__main__':
server = socketserver.ThreadingTCPServer(('127.0.0.1', 8080), MyTCPHandler)
server.serve_forever() # 链接循环
该博客展示了一段Python代码,通过`socketserver`和`os`模块实现TCP服务器通信循环。定义了`execCmd`函数执行命令,自定义`MyTCPHandler`类处理客户端请求,接收客户端数据并执行命令,将结果返回给客户端,最后启动服务器进入链接循环。
607

被折叠的 条评论
为什么被折叠?



