MST

星途 面试题库

面试题:Python套接字地址解析之基本应用

在Python中,使用`socket`模块进行地址解析时,`getaddrinfo`函数的参数有哪些,分别代表什么含义?请举例说明如何使用该函数解析一个主机名和端口号,获取套接字地址信息。
49.9万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
  1. getaddrinfo函数参数及含义
    • host:要解析的主机名或IP地址。例如,'www.example.com''192.168.1.1'
    • port:要解析的端口号,可以是整数(如 80 代表HTTP),也可以是服务名(如 'http')。
    • family:地址族,可选值有 socket.AF_INET(IPv4)、socket.AF_INET6(IPv6)、socket.AF_UNSPEC(自动选择)。默认是 socket.AF_UNSPEC
    • socktype:套接字类型,常见的有 socket.SOCK_STREAM(TCP流套接字)、socket.SOCK_DGRAM(UDP数据报套接字)。默认是 0,表示根据协议自动选择。
    • proto:协议号,通常为 0 表示自动选择。常见值如 socket.IPPROTO_TCP 用于TCP,socket.IPPROTO_UDP 用于UDP。
    • flags:标志位,用于修改解析行为,常见值如 socket.AI_PASSIVE 用于被动模式(如服务器绑定地址)。默认是 0
  2. 示例代码
import socket

try:
    addr_info = socket.getaddrinfo('www.example.com', 'http', socket.AF_UNSPEC, socket.SOCK_STREAM)
    for item in addr_info:
        print(item)
except socket.gaierror as e:
    print(f"地址解析错误: {e}")

上述代码中,使用 socket.getaddrinfo 解析 www.example.com 的HTTP服务地址信息。通过循环打印 addr_info 中的每一项,展示获取到的套接字地址信息。如果解析过程中出现错误,会捕获并打印错误信息。