python作为服务端发送cpu的百分比到客户端通过socket

文章展示了如何用Python编写一个服务器,该服务器使用psutil库获取CPU使用率并通过套接字发送给客户端。客户端示例分别用Python和Delphi实现,持续接收并显示服务器发送的CPU百分比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 下面是一个示例,说明如何编写一个 Python 服务器,使用套接字将 CPU 使用率发送给客户端:

 

use python to write server that send cpu percent to client by socket

服务端源代码:

import socket
import psutil

def get_cpu_percent():
    return psutil.cpu_percent()

def start_server():
    host = '127.0.0.1'
    port = 5000

    server_socket = socket.socket()
    server_socket.bind((host, port))
    server_socket.listen(1)

    print(f'Server started on {host}:{port}')

    while True:
        conn, address = server_socket.accept()
        print(f'Client connected from {address}')
        cpu_percent = str(get_cpu_percent())
        conn.send(cpu_percent.encode('utf-8'))
        conn.close()

if __name__ == '__main__':
    start_server()

上面的代码使用 psutil 库来获取当前的 CPU 使用率。 get_cpu_percent 函数将此值作为浮点数返回,并在发送到客户端之前转换为字符串。 start_server 函数设置服务器套接字并侦听传入连接。 当客户端连接时,CPU 使用百分比会发送到客户端并关闭连接。

客户端使用两种语言。

python语言:

write client please
import socket

host = "localhost"
port = 5000

client_socket = socket.socket()
client_socket.connect((host, port))

while True:
    data = client_socket.recv(1024).decode()
    if not data:
        break
    print("Received data from server: " + data)

client_socket.close()

该客户端首先在指定的主机和端口上建立到服务器的连接。 然后它进入一个循环,侦听来自服务器的传入数据。 使用 recv 方法接收数据,该方法将要接收的最大字节数作为参数。 decode 方法用于将接收到的字节转换为字符串。 循环继续,直到没有更多的数据被接收,此时使用 close 方法关闭连接。

delphi语言编写的client代码。

用到了clientsocket控件和timer组件。

var
  ClientSocket1: TClientSocket;

  ClientSocket1 := TClientSocket.Create(Self);

  with ClientSocket1 do
  begin
    Name := 'ClientSocket1';
    Active := False;
    ClientType := ctNonBlocking;
    Host := '127.0.0.1';
    Port := 5000;
    OnRead := ClientSocket1Read;
  end;
var
  Timer1: TTimer;

  Timer1 := TTimer.Create(Self);

  with Timer1 do
  begin
    Name := 'Timer1';
    OnTimer := Timer1Timer;
  end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  memo1.Lines.Add(Socket.ReceiveText);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  self.ClientSocket1.Active := true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
     Button1Click(self)
end;

点击运行图标。

 停止debug点击kill terminal

server源代码:D:\spiderdocs

client源代码: D:\delphisource\pclinet

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值