通过socket,实现客户端发送命令,将服务端执行出的结果,反回到客户端,主要4个步骤:
1、服务端返回数据;

2、服务端返回数据的大小;

3、客户端接收返回数据的大小;

4、客户端按返回数据大小接收数据;

一、客户端代码

#客户端
import socket
client=socket.socket() #生成socket连接对象
client.connect(("localhost",6969))
while True:
msg=input(">>>:")
if not msg:
continue
client.send(msg.encode("utf-8")) #发送命令到服务端 ;
cmd_res_size=client.recv(1024) #接收命的长度;
print ("命令结果大小为:",cmd_res_size)
print(type(cmd_res_size.decode()))
cmd_size=0
cmd_data=b''
while cmd_size!=int(cmd_res_size.decode()):
data=client.recv(1024)
cmd_size+=len(data.decode())
cmd_data+=data
else:
print ("cmd received done !",cmd_size)
print (cmd_data.decode())
client.close() 二、服务端
#服务端
import socket,os
so_server=socket.socket()
so_server.bind(("localhost",6969))
so_server.listen()
print ("等电话!")
while True: #实现多个链路连接;
conn,addr=so_server.accept()
print ("电话来了!")
while True:
data = conn.recv(1024)
print (data.decode())
res=os.popen(data.decode("utf-8")).read() #执行客户端命令
cmd_size=len(res)
conn.send(str(cmd_size).encode("utf-8"))
conn.send(res.encode("utf-8"))
so_server.close()
												

最新文章

  1. Chrome 用户数据配置文件夹保存路径在哪?(Mac OS X/Windows/Linux)
  2. Rails :布局和视图渲染
  3. 在 lua 中实现函数的重载
  4. RGB色彩模式
  5. 事件[event]_C#
  6. node初步二 小爬虫
  7. DESTOON系统文章模块默认设置第一张图片为标题图的方法
  8. lvs、haproxy、nginx 负载均衡的比较分析
  9. CSS文字大小单位PX、EM、PT
  10. js获取url,截取url参数,截取url后文件名
  11. CNCC2017中的深度学习与跨媒体智能
  12. Java EE的未来
  13. 第十五节:HttpContext五大核心对象的使用(Request、Response、Application、Server、Session)
  14. mysql 分库分表 ~ ShardingSphere生态圈
  15. java乱码问题解决
  16. EXEC sp_executesql with multiple parameters
  17. MFC树形控件的使用(右键点击)
  18. 计算机基础-CPU
  19. MYSQL联合多表更新和删除(转)
  20. 02: http

热门文章

  1. 2015/12/29 Java语言概述 操作中注意事项
  2. Error处理: android.media.MediaRecorder.start(Native Method) 报错:start failed: -19【转】
  3. ubuntu tftp【转】
  4. P1198 [JSOI2008]最大数(线段树)
  5. hdu 4777 Queue
  6. 10 探索其他Excel对象
  7. bzoj4873
  8. Spark 多项式逻辑回归__二分类
  9. 11.7NOIP模拟题
  10. Notepad++安装插件