下面是一个示例,说明如何编写一个 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