Loading... # socket实现局域网S-C通信 ## 服务器端代码 ~~~python 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 ## 客户端代码 ~~~python 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 安装依赖: ~~~bash pip install psutil ~~~ 运行: ~~~bash # 先运行server.py再运行client.py > ./server.py > ./client.py ~~~ ## 运行截图 ![image-20220330200322262.png](http://xherlock.top/usr/uploads/2022/03/4119334665.png) **左边服务器端,右边客户端** 最后修改:2022 年 03 月 30 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏