socket.accept()
是 Python 中用于接受新连接的方法,它在未接收到新连接时会阻塞当前线程。这意味着在调用 socket.accept()
之前,如果没有客户端尝试连接到服务器,程序将等待直到有连接到达。
accept()
)时,如果操作不能立即完成,程序会等待直到操作完成。非阻塞模式下,这些操作会立即返回,即使它们没有完成。如果你在使用 socket.accept()
时遇到了阻塞代码的问题,可能是因为你的服务器在等待客户端连接,但没有客户端尝试连接。这可能是由于网络问题、客户端未启动、端口未开放等原因。
accept()
方法设置超时,这样即使没有客户端连接,也不会无限期地等待。下面是一个简单的 Python 服务器示例,它使用阻塞模式的 socket.accept()
:
import socket
# 创建 socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定端口
server_socket.bind(('localhost', 12345))
# 监听连接
server_socket.listen(5)
print("Server listening on port 12345...")
while True:
# 接受新连接
client_socket, addr = server_socket.accept()
print(f"Connection from {addr} has been established.")
# 发送欢迎消息
client_socket.send("Welcome to the server!".encode())
# 关闭连接
client_socket.close()
请注意,这个示例代码是非常基础的,并没有处理错误或异常情况。在生产环境中,你需要添加适当的错误处理和资源管理逻辑。
领取专属 10元无门槛券
手把手带您无忧上云