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

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_NUMERICHOSTsocket.NI_NUMERICSERV参数告诉getnameinfo()函数返回数字格式的主机名和端口号。

值得注意的是,getnameinfo()函数返回主机名和端口号的字符串形式。如果获取失败,将引发socket.gaierror异常。

总之,使用socket模块的getnameinfo()函数可以方便地获取套接字的主机名和端口号。通过这种方式,我们可以在网络编程中更好地理解和掌握套接字的信息。