socket实现局域网S-C通信

服务器端代码

from socket import *

sk = socket(AF_INET, SOCK_STREAM)
c_Port = 9999
sk.connect(('127.0.0.1', c_Port))    # 绑定地址到套接字

print('(1)show me OS info:')
print('(2)show me Disk info:')
print('(3)exit:')
while True:
    choice = input('input your choice:')
    if not choice:
        continue
    sk.send(choice.encode())
    s_reply = sk.recv(1024).decode()
    if not s_reply:
        print('通信结束')
        break
    print(s_reply)
sk.close()

所使用库:socket

客户端代码

from socket import *
from platform import *
from psutil import *

sk = socket(AF_INET, SOCK_STREAM)
s_Port = 9999
sk.bind(('127.0.0.1', s_Port))  # 绑定地址到套接字
sk.listen(5)  # 开始监听
print('The server is ready to receive!')
while True:
    conn, addr = sk.accept()  # 被动接收客户端连接,返回通信对象和客户端地址
    while True:
        c_request = conn.recv(1024).decode('utf-8')  # recv接收的最大数据量
        if c_request == '1':
            print('客户端请求OS info')
            os_info = '操作系统及版本信息:{0}\n系统版本号:{1}\n系统名称:{2}\n系统位数:{3}\n计算机类型:{4}\n计算机名称:{5}\n处理器类型:{6}\n计算机相关信息:{7}\n'\
                .format(platform(), version(), system(), str(architecture()),machine(), node(), processor(), str(uname()))
            conn.send(os_info.encode())
        elif c_request == '2':
            print('客户端请求Disk info')
            disk_num = len(disk_partitions())
            disk_size = ''
            GB = 1024*1024*1024
            for i in range(disk_num):
                disk_size += disk_partitions()[i].device.split(':')[0] + ':' + str(round(disk_usage(disk_partitions()[i].device).total / GB)) + 'GB\n'
            disk_info = '磁盘数目:{0}\n磁盘大小:\n{1}'.format(disk_num, disk_size)
            conn.send(disk_info.encode())
        elif c_request == '3':
            exit('通信结束')
        else:
            print('Error!')
    conn.close()
sk.close()

所使用库:socket、platform(获取操作系统信息)、psutil(获取磁盘数目和大小)

运行说明

环境:python3

安装依赖:

pip install psutil

运行:

# 先运行server.py再运行client.py
> ./server.py
> ./client.py

运行截图

image-20220330200322262.png

左边服务器端,右边客户端

最后修改:2022 年 03 月 30 日
如果觉得我的文章对你有用,请随意赞赏