[Python Study Notes]CS架构远程访问获取信息--Client端
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
>>文件: ps_client.py
>>作者: liu yang
>>邮箱: liuyang0001@outlook.com
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#!/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.connButten=Button(self.root,text="连接",command=self.connect)
        # 创建获取按钮
        self.getButten=Button(self.root,text="获取",state='disable',command=self.get_cpu_info)
        # 创建断开按钮
        self.exitButten=Button(self.root,text="退出",state='disable')
        self.txtBox=Text(self.root,width=40,height=10)
    def main(self):
        self.et_ip.place(x=5,y=20)
        self.et_port.place(x=5,y=50)
        self.ip_lable.place(x=230,y=20)
        self.port_lable.place(x=230,y=50)
        self.connButten.place(x=5,y=80)
        self.getButten.place(x=90,y=80)
        self.exitButten.place(x=180,y=80)
        self.txtBox.place(x=5,y=120)
        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.exitButten['state']='active'
                self.getButten['state']='active'
    def get_cpu_info(self):
        self.data='cpu'
        self.client.send(self.data.encode('utf-8'))
        cpu_used=self.client.recv(1024).decode('utf-8')
        print(cpu_used)
        self.txtBox.delete(0.0, END)
        # 字符串前加上r为防转义
        self.txtBox.insert(0.0, "当前的cpu使用率:%s"%cpu_used+r"%")
    def exit_connect(self):
        self.client.close()
        self.txtBox.delete(0.0, END)
        self.txtBox.insert(0.0, "当前连接已断开...")
if __name__ == '__main__':
    Ps=Ps_client()
    Ps.main()												
											[Python Study Notes]CS架构远程访问获取信息--Client端的更多相关文章
- [Python Study Notes]CS架构远程访问获取信息--Client端v2.0
		更新内容: 1.增加内存信息获取 2.增加电池信息获取 3.增加磁盘信息获取 4.重新布局窗体 5.增加窗体名称 6.增加连接成功之前,不可按压 效果图: '''''''''''''''''''''' ... 
- [Python Study Notes]CS架构远程访问获取信息--Client端v1.0
		更新内容: 1.添加entry栏默认ip和port口 2.修正退出功能 3.添加退出自动关闭窗口功能 4.优化cpu显示为固定保留两位小数 '''''''''''''''''''''''''''''' ... 
- [Python Study Notes]CS架构远程访问获取信息--SERVER端v2.0
		更新内容: 1.增加内存信息获取 2.增加电池信息获取 3.增加磁盘信息获取 4.重新布局窗体 5.增加窗体名称 6.增加连接成功之前,不可按压 ''''''''''''''''''''''''''' ... 
- [Python Study Notes]CS架构远程访问获取信息--SERVER端
		''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ... 
- Eureka系列(三)获取服务Client端具体实现
		获取服务Client 端流程 我们先看下面这张图片,这张图片简单描述了下我们Client是如何获取到Server已续约实例信息的流程: 从图片中我们可以知晓大致流程就是Client会自己开启一个 ... 
- [Python Study Notes]进程信息(丁丁软件监控进程,http-post)
		''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ... 
- [Python Study Notes]cpu信息
		''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ... 
- [Python Study Notes]电池信息
		''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ... 
- [Python Study Notes]内存信息
		''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ... 
随机推荐
- hbase伪分布式安装(单节点安装)
			hbase伪分布式安装(单节点安装) http://hbase.apache.org/book.html#quickstart 1. 前提配置好java,环境java变量 上传jdk ... 
- vi的常用命令
			https://zhidao.baidu.com/question/332242228.html vi的基本操作 a) 进入vi 在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面: $ v ... 
- SendCloud邮件中为什么会显示代发
			显示代发是发信的sender和发信人地址(from)不一致导致的. sender是SendCloud系统根据用户自设的发信域名生成的,目前是"随机地址@自有域名"做sender,所 ... 
- hive分区(partition)
			网上有篇关于hive的partition的使用讲解的比较好,转载了:一.背景1.在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作.有时候只需要扫描表中关心的一部分数据, ... 
- 【js 实践】js 实现木桶布局
			还有两个月左右就要准备实习了,所以特意练一练,今天终于搞定了js 的木桶布局了 这一个是按照一个插件的规格去写的以防以后工作需要,详细的解释在前端网这里 http://www.qdfuns.com/n ... 
- SNMP PDU解析
			(注:此文章仅为个人学习,研究,原创作者:Penguinbupt,原创文章网址:http://blog.csdn.net/u010566813/article/details/50490858) SN ... 
- requests关于Exceeded 30 redirects问题得出的结论
			昨天一个朋友在爬网页时出现的一个问题,以及后续我对这个问题进行了简单的测试. 先说出现的问题的简单描述. 首先是使用urllib请求网页: #urllib.request发起的请求 import ur ... 
- Mysql索引分析:适合建索引?不适合建索引?【转】
			数据库建立索引常用的规则如下: 1.表的主键.外键必须有索引: 2.数据量超过300的表应该有索引: 3.经常与其他表进行连接的表,在连接字段上应该建立索引: 4.经常出现在Where子句中的字段,特 ... 
- linux_mount相关故障
			fstab修改错误导致系统无法启动故障修复方案 1. 维护模式或救援模式 2. mount -o rw,remount 挂载点 # 这个方式也可以解决有些分区只能读的故障 3. 然后修改 /etc/f ... 
- python_19_异常处理
			什么是异常处理? -- 对于用户输入,不想让用户看见出错信息,对异常进行处理 异常处理的框架是什么? try: 可能出错的程序1 可能出错的程序2 #程序1出错了,不在执行程序2 exc ... 
