欢迎访问宙启技术站
智能推送

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()方法是一个阻塞方法,一旦有客户端连接,程序将会停在这里,直到有客户端连接成功。所以,如果需要处理多个客户端连接,可以使用多线程或多进程来并发处理。