Python网络编程 4.2 IPv6简介与现代地址解析--getaddrinfo()方法的使用

本文介绍了IPv6在网络编程中的重要性,以及如何在Python中使用getaddrinfo()方法进行地址解析。通过示例代码展示了getaddrinfo()如何用于服务器绑定端口和连接服务,强调了在不同场景下使用该方法的技巧,包括AI_ADDRCONFIG和AI_V4MAPPED标志的作用。同时,文中提到了www.a.shifen.com作为www.baidu.com解析结果的趣事。
摘要由CSDN通过智能技术生成

IPv6是一个地址族,与IPv4的AF_INET类似的,其地址族为AF_INET6。这将是未来的主流地址族,可以防止IP地址被耗尽的情况。同时IPv6协议对链路层安全等很多特性提供了更加完整的支持。IPv6对Python代码的影响:

  • 必须使用AF_INET6来创建套接字,且套接字名不再仅仅由地址和端口号组成,还包括提供了“流”信息和“范围”标识的额外坐标。
  • IPv4用字节表示地址的优美形式被含有大量冒号、十六进制数字等的丑陋IPv6形式代替。
为了令程序简单强大,并免于处理IPv4到~6的迁移带来的复杂性,Python提供了套接字用户工具集中最强大的工具之一——getaddrinfo().

getaddrinfo()是socket模块中涉及地址的众多操作之一,它可能是我们用来将用户指定的主机名和端口号转换为可供套接字方法使用的地址时所需的唯一方法。在下面一段代码中,分别用之前的socket方法和getaddrinfo方法来实现对百度的连接:

from pprint import pprint
import  socket

sc = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sc.connect(('www.baidu.com',80))  #之前的方法。参数中的www.可以去掉,因为80就代表www服务器的默认端口号,可以从后面的连接看出来。

infolist = socket.getaddrinfo('baidu.com','www')  #getaddrinfo方法可以直接用www作为端口号,也可以用整形80来作为端口号。而上面的方法只能用整形。
pprint(infolist)
info &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值