2 现代地址解析
首先要说Python套接字最强大的工具之一-------getaddrinfo()
这个函数可能是我们用来将用户指定的主机名和端口号转换为可供套接字方法使用的地址时所需的唯一方法。
getaddrinfo()提供的方法很简单,我们能够在一个调用中指明要创建的连接所需的一切已知信息。
该方法返回之前讨论过的全部坐标,这些坐标是创建并将套接字连接至目标地址所必须的。
1 >>> from pprint import pprint 2 >>> infolist = socket.getaddrinfo('gatech.edu','www') 3 >>> pprint(infolist) 4 [(2,1,6,'',('130.207.244.244',80)), 5 (2,2,17,'',(,130.207.244.244',80))] 6 >>> info = infolist[0] 7 >>> info[0:3] 8 (2,1,6) 9 >>> s = socket.socket(*info[0:3]) 10 >>> info[4] 11 ('130.207.244.244',80) 12 >>> s.connect(info[4])
注意:pprint模块与网络操作无关,只不过他在打印元祖列表是比标准的print函数效果好
info变量包含了连接所需的所有信息,他提供了地址族,类型,协议,规范名称以及地址信息。
2.1 使用getaddrinfo()为服务器绑定端口
当我们指明想支持的服务,然后通过getaddrinfo()的返回值得到多个可用的地址时,应怎么做?当然无法通过bind()将创建的单个套接字绑定到多个地址。这个问题将在7异步服务器解决。