我试图在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地址。