Python:getaddrinfo和gethostbyname不返回端口号

时间:2014-07-07 22:55:25

标签: python c++ embedded port marmalade

我已经将python 2.7.1嵌入到基于C ++的应用程序(橘子酱)

运行以下示例: https://docs.python.org/2/library/socket.html

输入

import socket
socket.getaddrinfo("www.python.org", 80, 0, 0, socket.SOL_TCP)

返回

[(2, 3, 3, '', ('23.235.47.175', 0))]

DEBUG:
SOCKET: s3eInetAton: 'www.python.org'
SOCKET: s3eInetLookup: 'www.python.org'
SOCKET: s3eInetLookup (synchronous): done DNS: '23.235.47.175:0'
IWCRT: gethostbyname www.python.org -> 4a700360

但是它应该是这样的,端口不等于零

[(2,1,6,'',('xx.xx.xx.xx', 80 )]

与getaddrinfo相同:

输入

import sys, socket

result = socket.getaddrinfo("python.org", None, 0, socket.SOCK_STREAM)

for item in result:
    print (item[4])

返回

('140.211.10.69', 0)

('xx.xx.xx.xx', 80

仍然没有端口


  • 我在主目录之外运行脚本
  • 我已经梳理了pyconfig.h以查看是否缺少任何设置(我看到了)
  • 我搜索了一个常见的python套接字设置列表,没有找到的位置(你认为这很容易)

关于可能导致这种情况的任何想法?

1 个答案:

答案 0 :(得分:0)

我不认为getaddrinfo()或gethostbyname()会返回端口以及IP。您可以查看以下链接getaddrinfo()和RFC-2553。