【问题标题】:Python: getaddrinfo and gethostbyname do not return port numbersPython:getaddrinfo 和 gethostbyname 不返回端口号
【发布时间】:2014-07-07 22:55:24
【问题描述】:

我已将 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

不过应该​​是这样的,端口不等于0

[(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 套接字设置列表,但找不到(你会认为这很容易)

有什么可能导致这种情况的想法吗?

【问题讨论】:

    标签: python c++ embedded port marmalade


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      相关资源
      最近更新 更多