python网络通信中cs架构_[Python Study Notes]CS架构远程访问获取信息--SERVER端v2.0

更新内容:

1.增加内存信息获取

2.增加电池信息获取

3.增加磁盘信息获取

4.重新布局窗体

5.增加窗体名称

6.增加连接成功之前,不可按压

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

>>文件: ps_server.py

>>作者: liu yang

>>邮箱: liuyang0001@outlook.com

>>博客: www.cnblogs.com/liu66blog

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import sys, os

from socket import *

import psutil

from time import sleep

'''得到cpu使用率'''

'''返回值:(float)cpu使用率'''

def get_cpu_percent():

cpu_start_alltime=psutil.cpu_times()

'''print(cpu_start_alltime)得到的内容:scputimes(user=14088.359375, system=20540.59375,

idle=362071.6875, interrupt=847.9375019073486, dpc=3795.6875)'''

t1all=sum(cpu_start_alltime)#开始的cpu时间总和

sleep(1)#休眠一秒

cpu_end_alltime=psutil.cpu_times()

t2all=sum(cpu_end_alltime)#结束时的cpu时间总和

t1busy=t1all-cpu_start_alltime.idle#开始的忙碌时间=总时间-空闲时间

t2busy=t2all-cpu_end_alltime.idle

'''cpu使用率:(结束的忙碌时间-开始的忙碌时间)/(结束的总时间-开始的总时间)'''

cpu_busy=(t2busy-t1busy)/(t2all-t1all)*100

# print("cpu使用率:%0.2f"%cpu_busy+'%')

return cpu_busy

# 另一种写法

# def get_cpu_percent():

# return psutil.cpu_percent(1)

'''将bytes数转换成更加直观的符号显示'''

'''返回值:(str)两位浮点数+B'''

def bytes2symbols(bytes_value):

'''单位符号'''

symbols = ('K' ,'M', 'G', 'T', 'P', 'E', 'Z', 'Y')

'''每个单位对应的bytes数的字典,先定义为空'''

prefix={}

'''要得到这样的{K:1024, M:1024*1024,G:1024**3},进行for循环'''

for i,s in enumerate(symbols):

# '''enumerate()为列举函数'''

# '''i:代表下标'''

# '''s:代表改下标对应的值'''

# '''取到符号元组的值,作为prfix字典的key,根据key给value进行赋值'''

prefix[s]=1024**(i+1)

# '''打印得到的对应字典'''

# print(prefix)

symbols_value=0

symbol=''

# '''循环prefix字典,得到转换值'''

for key,value in prefix.items():

if bytes_value >=value :

symbols_value=bytes_value/value

symbol=key

# 如果不满足最小的KB,则以B显示

elif bytes_value <1024:

return '%0.2fB'%bytes_value

# '''返回转换值(str)'''

return '%0.2f%sB'%(symbols_value,symbol)

'''得到内存信息'''

'''返回值:(str)内存信息'''

def get_memory():

nt=psutil.virtual_memory()

# 得到的数据:svmem(total=8482263040, available=1770676224, percent=79.1, used=6711586816, free=1770676224)

# print(nt)

total=bytes2symbols(nt.total)

available=bytes2symbols(nt.available)

percent=bytes2symbols(nt.percent)

used=bytes2symbols(nt.used)

free=bytes2symbols(nt.free)

return ("总内存:%4s \n可使用:%4s \n已使用:%4s"%(total,available,used))

'''得到电池信息'''

'''返回值:(str)电池信息'''

def get_battery():

ba=psutil.sensors_battery()

# 未充电:sbattery(percent=13, secsleft=4294967295, power_plugged=False)

# 在充电:sbattery(percent=14, secsleft= < BatteryTime.POWER_TIME_UNLIMITED: -2 >, power_plugged = True)

battery=ba.percent

if ba.power_plugged:

power="正在充电中..."

else:

power="未充电"

return ('电量剩余:%d 电源状态:%2s'%(battery,power))

'''磁盘分区信息显示'''

'''返回值:(str)磁盘信息'''

def get_disk():

# 得到磁盘详细信息的列表

disks = psutil.disk_partitions()

# 磁盘信息列表

disk_list = []

disk_str=''

# 循环列表,打印

for disk in disks:

disk_list.append('disk:%2s type:%4s opts:%8s \n' % (disk.device, disk.fstype, disk.opts))

disk_str+='disk:%2s type:%4s opts:%8s \n' % (disk.device, disk.fstype, disk.opts)

# print(disk_str)

return disk_str

# 在这里定义一个字典,存储字符和对应函数关系

command_dict={'cpu':get_cpu_percent,'memory':get_memory,'battery':get_battery,'disk':get_disk,}

# 创建服务端 TCP/IP IPv4

server=socket(AF_INET,SOCK_STREAM)

server.bind(('localhost',66))

server.listen(5)

print("等待客户端进行连接...")

while True:

# 等待连接阻塞

conn,addr=server.accept()

# 元祖取值需要用方括号!!!

print("%s已连接..."%addr[0])

while True:

data = conn.recv(1024).decode('utf-8')

if data in command_dict.keys():

print(command_dict[data]())

buf=str(command_dict[data]()).encode('utf-8')

print(buf.decode())

conn.send(buf)

if not data:

print("客户按可能已断开连接...")

break

conn.close()

conn.close()

&lbrack;Python Study Notes&rsqb;CS架构远程访问获取信息--Client端v2&period;0

更新内容: 1.增加内存信息获取 2.增加电池信息获取 3.增加磁盘信息获取 4.重新布局窗体 5.增加窗体名称 6.增加连接成功之前,不可按压 效果图: '''''''''''''''''''''' ...

&lbrack;Python Study Notes&rsqb;CS架构远程访问获取信息--Client端v1&period;0

更新内容: 1.添加entry栏默认ip和port口 2.修正退出功能 3.添加退出自动关闭窗口功能 4.优化cpu显示为固定保留两位小数 '''''''''''''''''''''''''''''' ...

&lbrack;Python Study Notes&rsqb;CS架构远程访问获取信息--SERVER端

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

&lbrack;Python Study Notes&rsqb;CS架构远程访问获取信息--Client端

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

&lbrack;Python Study Notes&rsqb;进程信息&lpar;丁丁软件监控进程&comma;http-post&rpar;

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

&lbrack;Python Study Notes&rsqb;cpu信息

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

&lbrack;Python Study Notes&rsqb;电池信息

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

&lbrack;Python Study Notes&rsqb;内存信息

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

&lbrack;Python Study Notes&rsqb;磁盘信息和IO性能

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

随机推荐

EasyUI-datagrid 对于展示数据进行处理&lpar;formatter&rpar;

一:声明datagrid列,在列中添加formatter属性,并指定js方法 columns = [[ { title: '编号', field: 'Id', width: 100, sortable ...

python走起之第四话

本节大纲: 一:双层装饰器:一个函数可以被多层装饰器进行装饰,函数渲染(编译)从下到上,函数执行从上到下.如下程序: 1 #!/usr/bin/env python 2 #-*-coding:utf- ...

Hash散列算法 Time33算法

hash在开发由频繁使用.今天time33也许最流行的哈希算法. 算法: 对字符串的每一个字符,迭代的乘以33 原型: hash(i) = hash(i-1)*33 + str[i] ; 在使用时.存 ...

【转】深入浅出:Linux设备驱动之字符设备驱动

深入浅出:Linux设备驱动之字符设备驱动 一.linux系统将设备分为3类:字符设备.块设备.网络设备.使用驱动程序: 字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据 ...

Go基础系列:Go slice详解

slice表示切片(分片),例如对一个数组进行切片,取出数组中的一部分值.在现代编程语言中,slice(切片)几乎成为一种必备特性,它可以从一个数组(列表)中取出任意长度的子数组(列表),为操作数据结 ...

构建NTP时间服务器

NTP服务器是用于局域网服务器时间同步使用的,可以保证局域网所有的服务器与时间服务器的时间保持一致,某些应用对时间实时性要求高的必须统一时间. 互联网的时间服务器也有很多,例如ntpdate ntp. ...

【xsy1300】 原题的旅行 最短路&plus;倍增

题目大意:有一个$n$个点,$m$条边的无向图,玩家走过第$i$条边,血槽中的血会下降$v_i$点,如果不足$v_i$点,这人会当场去世. 这$n$个点中,有若干个是关键点,在这些关键点可以将血槽补满 ...

G&period; &lpar;Zero XOR Subset&rpar;-less(线性基)

题目链接:http://codeforces.com/contest/1101/problem/G 题目大意:给你n个数,然后让你把这n个数分成尽可能多的集合,要求,每个集合的值看做这个集合所有元素的 ...

Go语言之进阶篇TCP相互通信

1.TCP相互通信 服务端示例: tcp_server.go package main import ( "fmt" "net" ) func main() { ...

C&plus;&plus;解析&lpar;3&rpar;:布尔类型与三目运算符

0.目录 1.布尔类型 2.三目运算符 3.小结 1.布尔类型 C++中的布尔类型: C++在C语言的基本类型系统之上增加了bool C++中的bool可取的值只有true和false 理论上bool ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值