在Python中,`socket.accept()`方法用于监听已建立连接的套接字上并接受一个客户端的连接请求。这个方法会阻塞程序直到有一个客户端尝试连接到服务器端点时才会返回。
返回值是一个包含两个元素的元组:第一个元素是新的套接字对象(用于与客户端通信),第二个元素是客户端地址信息(通常是IP地址和端口号)。
详细步骤如下:
1. 创建一个socket对象,并设置其类型为SOCK_STREAM(TCP)以及AF_INET(IPv4)。
2. 使用bind()方法将套接字与特定的地址和端口绑定。
3. 调用listen()方法开始监听连接请求,参数是最大挂起连接的数量。
4. 调用accept()方法接受一个客户端的连接请求。
代码示例:
```python
import socket
# 创建一个socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 设置服务器地址和端口
server_address = ('localhost', 12345)
# 将套接字与地址和端口绑定
server_socket.bind(server_address)
# 开始监听连接请求,最大挂起连接数量为5
server_socket.listen(5)
print("服务器正在运行,等待客户端连接...")
# 接受一个客户端的连接请求
client_socket, client_address = server_socket.accept()
print("已连接到客户端:", client_address)
# 可以进行通信了
message = "欢迎来到服务器!"
client_socket.send(message.encode())
data = client_socket.recv(1024).decode()
print("从客户端接收的消息:", data)
# 关闭套接字
client_socket.close()
server_socket.close()
```
在这段代码中,服务器会监听12345端口上的连接请求。当有客户端尝试连接到这个端口时,`accept()`方法会返回一个新的套接字对象和一个包含客户端地址信息的元组。然后,服务器可以进行通信了,向客户端发送一条欢迎消息,并接收客户端发送的消息。最后,无论通信是否结束,都会关闭套接字以释放资源。