MST

星途 面试题库

面试题:Python构建硬件客户端服务器架构之基础通信

在Python中,使用socket模块构建一个简单的硬件客户端服务器架构,实现客户端向服务器发送一条硬件状态信息(例如温度值),服务器接收并打印该信息。请写出关键代码片段,并解释socket创建、绑定、监听以及数据收发的主要步骤。
46.7万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

服务器端代码

import socket

# 创建socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 获取本地主机名
host = socket.gethostname()
port = 9999

# 绑定端口号
server_socket.bind((host, port))

# 设置最大连接数,监听客户端连接
server_socket.listen(5)

while True:
    # 建立客户端连接
    client_socket, addr = server_socket.accept()
    print('连接地址: %s' % str(addr))
    # 接收客户端发送的数据
    data = client_socket.recv(1024).decode('utf-8')
    print('接收到的数据: %s' % data)
    # 关闭连接
    client_socket.close()

客户端代码

import socket

# 创建socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 获取本地主机名
host = socket.gethostname()
port = 9999

# 连接服务,指定主机和端口
client_socket.connect((host, port))

# 发送硬件状态信息(这里假设为温度值)
message = "30"  # 示例温度值
client_socket.send(message.encode('utf-8'))

# 关闭连接
client_socket.close()

socket创建、绑定、监听以及数据收发的主要步骤解释

  1. socket创建
    • socket.socket(socket.AF_INET, socket.SOCK_STREAM)AF_INET指定使用IPv4协议,SOCK_STREAM指定使用TCP协议。这一步创建了一个基于TCP/IPv4的socket对象,用于后续的网络通信。
  2. 绑定
    • server_socket.bind((host, port)):将socket绑定到指定的主机和端口。在服务器端,需要明确告知socket要在哪个地址和端口上监听客户端连接。这里host是主机名(也可以使用IP地址),port是端口号。客户端在连接时会使用相同的端口号连接到该地址。
  3. 监听
    • server_socket.listen(5):设置socket为监听模式,参数5表示可以挂起的最大连接数。当有多个客户端同时尝试连接服务器时,未被接受的连接会进入等待队列,最多容纳5个。
  4. 数据接收(服务器端)
    • client_socket, addr = server_socket.accept():接受客户端的连接请求,返回一个新的socket对象client_socket用于与该客户端进行通信,同时返回客户端的地址addr
    • data = client_socket.recv(1024).decode('utf-8'):从客户端接收数据,recv(1024)表示一次最多接收1024字节的数据。接收到的数据是字节类型,需要使用decode('utf-8')将其转换为字符串类型。
  5. 数据发送(客户端)
    • client_socket.send(message.encode('utf-8')):将硬件状态信息(如温度值)message转换为字节类型(encode('utf-8')),然后通过socket发送给服务器。