Python中accept()方法与SO_REUSEADDR选项的使用
发布时间:2023-12-23 02:55:33
在Python中,accept()方法用于接受一个新的连接,并返回一个新的套接字对象和客户端地址。
import socket
# 创建一个TCP socket对象
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 设置SO_REUSEADDR选项为1(开启)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# 绑定服务器地址和端口号
server_address = ('localhost', 8080)
sock.bind(server_address)
# 监听并接受一个客户端连接
sock.listen(1)
print('等待客户端连接...')
# 接受客户端连接
client_socket, client_address = sock.accept()
print('客户端已连接:', client_address)
# 关闭socket连接
sock.close()
在上面的例子中,我们首先创建了一个TCP socket对象,并设置了SO_REUSEADDR选项为1,以允许服务器在关闭后立即重新运行。
接下来,我们绑定了服务器地址和端口号,并开始监听客户端连接。一旦有客户端连接,accept()方法将会阻塞,并返回一个新的客户端套接字对象和客户端地址。
最后,我们打印出客户端的连接信息,并关闭socket连接。
需要注意的是,accept()方法是一个阻塞方法,一旦有客户端连接,程序将会停在这里,直到有客户端连接成功。所以,如果需要处理多个客户端连接,可以使用多线程或多进程来并发处理。
