在 Python 中,使用 socket 模块可以创建网络套接字,实现网络通信功能。其中,socket.listen() 函数用于将一个套接字标记为被动监听状态,以便可以接受传入的连接请求。
函数原型如下:
socket.listen(backlog)
其中,backlog 参数指定了套接字排队的最大连接个数。如果连接请求的数量超过了 backlog,那么客户端会收到一个 ECONNREFUSED 错误。通常情况下,backlog 参数的值可以设置为 5 或者 10。
当一个套接字被标记为被动监听状态后,它可以接受来自客户端的连接请求。在客户端调用 connect() 函数后,服务器端的 accept() 函数就会接受这个连接请求,并创建一个新的套接字来处理这个连接。在这个新的套接字上,客户端和服务器端可以进行数据交换。
下面是一个简单的 Python 服务器示例代码,演示了如何使用 socket.listen() 函数创建一个基于 TCP 协议的服务器,并接受来自客户端的连接请求:
import socket
HOST = '' # 表示监听所有网络接口
PORT = 8000 # 端口号
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建套接字
server_socket.bind((HOST, PORT)) # 绑定到指定地址和端口
server_socket.listen(5) # 设置监听队列的最大长度
print(f'Server is listening on {PORT}...')
while True:
# 等待客户端连接请求
client_socket, client_address = server_socket.accept()
print(f'Received connection from {client_address}')
# 在新的套接字上处理连接请求
# ...
以上代码创建了一个基于 TCP 协议的服务器,并设置了监听队列的最大长度为 5。在 while 循环中,使用 accept() 函数等待客户端连接请求。当有新的连接请求到达时,accept() 函数就会返回一个新的套接字和客户端地址信息。在新的套接字上,可以处理客户端发送过来的数据。
希望这个回答能够帮助你理解 socket.listen() 函数的作用。如果你还有任何疑问,欢迎随时继续提问。