Python中使用socketgetnameinfo()函数获取主机名和端口号
发布时间:2023-12-24 18:18:18
在Python中,我们可以使用socket模块下的getnameinfo()函数来获取主机名和端口号。getnameinfo()函数接受一个套接字地址作为参数,返回主机名和端口号的字符串。
下面是一个使用getnameinfo()函数获取主机名和端口号的例子:
import socket
# 创建一个TCP套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定套接字到一个地址和端口
server_address = ('localhost', 8080)
sock.bind(server_address)
# 获取套接字的主机名和端口号
hostname, port = socket.getnameinfo(sock.getsockname(), socket.NI_NUMERICHOST | socket.NI_NUMERICSERV)
print(f'Hostname: {hostname}')
print(f'Port: {port}')
上面的代码首先创建了一个TCP套接字,然后将其绑定到地址localhost和端口8080。接下来,我们使用getnameinfo()函数获取套接字地址的主机名和端口号。最后,打印出获取到的主机名和端口号。
请注意,我们在调用getnameinfo()函数时使用了sock.getsockname()来获取套接字的地址,然后将其作为参数传递给getnameinfo()函数。socket.NI_NUMERICHOST和socket.NI_NUMERICSERV参数告诉getnameinfo()函数返回数字格式的主机名和端口号。
值得注意的是,getnameinfo()函数返回主机名和端口号的字符串形式。如果获取失败,将引发socket.gaierror异常。
总之,使用socket模块的getnameinfo()函数可以方便地获取套接字的主机名和端口号。通过这种方式,我们可以在网络编程中更好地理解和掌握套接字的信息。
