python无法使用socket连接与广播获取IP地址

时间:2017-05-24 06:31:22

标签: python sockets solaris

我试图在Linux上使用以下方法获取服务器的IP地址,

Python 2.4.3 (#1, Jan  9 2013, 01:38:41)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
>>> s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
>>> s.connect(('<broadcast>', 0))
>>> s.getsockname()[0]
'xxx.xxx.xxx.xxx'
>>>

但是当我在Solaris系统上使用Python 2.6.4尝试相同的方法时,它无法正常工作并且出现如下错误,

Python 2.6.4 (r264:75706, Apr 20 2011, 20:04:12) [C] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
>>> s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
>>> s.connect(('<broadcast>', 0))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in connect
socket.error: [Errno 126] Cannot assign requested address
>>> 

所以想要了解这个python模块的功能是否因操作系统风味而有所不同。在我的设置中,IP没有注册任何主机名,因此我无法回复主机名以获取详细信息,为此我必须使用此套接字连接方法来获取IP地址。

更新:

我的目的是在不使用/ etc / hosts文件的情况下获取服务器的IP地址。

0 个答案:

没有答案