[Python Study Notes]CS架构远程访问获取信息--Client端v2.0
Posted 刘六六
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Python Study Notes]CS架构远程访问获取信息--Client端v2.0相关的知识,希望对你有一定的参考价值。
更新内容:
1.增加内存信息获取
2.增加电池信息获取
3.增加磁盘信息获取
4.重新布局窗体
5.增加窗体名称
6.增加连接成功之前,不可按压
效果图:
\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\' >>文件: ps_client.py >>作者: liu yang >>邮箱: liuyang0001@outlook.com >>博客: www.cnblogs.com/liu66blog \'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\' #!/usr/bin/env python # -*- coding: utf-8 -*- import sys, os from socket import * from tkinter import * class Ps_client(): def __init__(self): self.ip=None self.port=None self.data=None # 创建ipv4套接字 self.client=socket(AF_INET,SOCK_STREAM) self.root=Tk() self.root.geometry(\'300x300+250+250\') # 创建IP输入框 var_ip = StringVar() var_ip.set(\'localhost\') self.et_ip=Entry(self.root,width=30,textvariable=var_ip) self.et_ip.pack() # 创建IP输入框的Label self.ip_lable=Label(self.root,text="ip地址") # 创建端口号输入框 var_port = StringVar() var_port.set(66) self.et_port=Entry(self.root,width=30,textvariable=var_port) # 创建端口号Label self.port_lable=Label(self.root,text="端口号") # 创建连接按钮,注意!!!command=后面的连接的不加括号 self.connButton=Button(self.root,text="连接",command=self.connect) # 创建获取cpu按钮 self.getCpuButton=Button(self.root,text="CPU",state=\'disable\',command=self.get_cpu_info) # 创建获取memory按钮 self.getMemoryButton=Button(self.root,text="内存",state=\'disable\',command=self.get_memory_info) # 创建获取battery按钮 self.getBatteryButton = Button(self.root, text="电池", state=\'disable\', command=self.get_battery_info) # 创建获取disk按钮 self.getDiskButton=Button(self.root,text="磁盘",state=\'disable\',command=self.get_disk_info) # 创建断开按钮 self.exitButton=Button(self.root,text="退出",state=\'disable\',command=self.exit_connect) self.txtBox=Text(self.root,width=40,height=10) def main(self): self.root.title(\'博客园:liu66\') self.et_ip.place(x=10,y=20) self.et_port.place(x=10,y=50) self.ip_lable.place(x=245,y=20) self.port_lable.place(x=245,y=50) self.connButton.place(x=10,y=80) self.getCpuButton.place(x=70,y=80) self.getMemoryButton.place(x=130,y=80) self.getBatteryButton.place(x=190,y=80) self.getDiskButton.place(x=250,y=80) self.txtBox.place(x=5,y=120) self.exitButton.place(x=255,y=260) # self.txtBox.insert(INSERT,\'在这里显示内容\') self.root.mainloop() def connect(self): self.ip=self.et_ip.get() try: self.port=int(self.et_port.get()) except ValueError: self.txtBox.delete(0.0,END) self.txtBox.insert(0.0,"请输入合法的ip和端口...") else: print("ip:%s"%self.ip) print("port:%s"%self.port) self.txtBox.delete(0.0,END) self.txtBox.insert(0.0,"正在链接中...") try: self.client.connect((self.ip,self.port)) except OSError: print("向一个无法连接的网络尝试了一个套接字操作") self.txtBox.delete(0.0, END) self.txtBox.insert(0.0, "%s:%d连接失败..."%(self.ip,self.port)) else: print("%s连接成功..."%self.ip) self.txtBox.delete(0.0, END) self.txtBox.insert(0.0, "%s:%d连接成功..."%(self.ip,self.port)) # 连接成功则将其他按钮变为可按状态 self.exitButton[\'state\']=\'active\' self.getCpuButton[\'state\']=\'active\' self.getMemoryButton[\'state\']=\'active\' self.getBatteryButton[\'state\']=\'active\' self.getDiskButton[\'state\']=\'active\' def get_cpu_info(self): self.data=\'cpu\' self.client.send(self.data.encode(\'utf-8\')) # 将接受的数据装换成浮点数据 cpu_used=float(self.client.recv(1024).decode(\'utf-8\')) print(\'CPU使用率:%0.2f\'%cpu_used+\'%\') self.txtBox.delete(0.0, END) # 字符串前加上r为防转义 self.txtBox.insert(0.0, "当前的cpu使用率:%0.2f"%cpu_used+r"%") def get_memory_info(self): self.data=\'memory\' self.client.send(self.data.encode(\'utf-8\')) memory_message=self.client.recv(1024).decode(\'utf-8\') print(memory_message) # 清除显示 self.txtBox.delete(0.0, END) # 显示内存信息 self.txtBox.insert(0.0, "%s" %memory_message) def get_battery_info(self): self.data=\'battery\' self.client.send(self.data.encode(\'utf-8\')) battery_message=self.client.recv(1024).decode(\'utf-8\') print(battery_message) # 清除显示 self.txtBox.delete(0.0, END) # 显示内存信息 self.txtBox.insert(0.0, "%s" %battery_message) def get_disk_info(self): self.data=\'disk\' self.client.send(self.data.encode(\'utf-8\')) disk_message=self.client.recv(1024).decode(\'utf-8\') print(disk_message) # 清除显示 self.txtBox.delete(0.0, END) # 显示内存信息 self.txtBox.insert(0.0, "%s" %disk_message) def exit_connect(self): self.client.close() self.txtBox.delete(0.0, END) self.txtBox.insert(0.0, "当前连接已断开...") print("当前连接已断开...") self.exitButton[\'state\'] = \'disable\' self.getCpuButton[\'state\'] = \'disable\' self.getMemoryButton[\'state\'] = \'disable\' # 关闭当前窗口 self.root.destroy() if __name__ == \'__main__\': Ps=Ps_client() Ps.main()
以上是关于[Python Study Notes]CS架构远程访问获取信息--Client端v2.0的主要内容,如果未能解决你的问题,请参考以下文章
[Python Study Notes]CS架构远程访问获取信息--SERVER端v2.0
[Python Study Notes]CS架构远程访问获取信息--Client端v2.0