在Ubuntu 12.04上,Python出现socket.error: [Errno 111] Connection refused错误。

3

我正在尝试使用Python的套接字,但是我一直收到这个错误信息:

import socket
>>> s = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
>>> s.connect(('localhost', 8000))
Traceback (most recent call last):
  File "stdin", line 1, in module
  File "/usr/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 111] Connection refused

/etc/hosts 中的配置如下:

::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

系统是Ubuntu 12.04,没有配置防火墙。 尝试更改端口号,但没有成功;它只能使用与"localhost"不同的域名。有人知道为什么会这样吗?


1
你的机器上有没有任何东西在监听那个端口? - Mat
不,什么都没有。那可能是防火墙问题或权限问题吗?我在win7上也遇到了同样的问题,所以我配置了win防火墙以允许Python连接到本地主机,然后它就可以工作了。 - Michele
1
如果没有监听,你就无法连接。 - Mat
1个回答

2

尝试

s = socket.socket( socket.AF_INET6, socket.SOCK_STREAM )
s.connect(('::1', 8000))

你似乎只启用了IPv6。


抱歉.. 经过双重检查,我的 /etc/hosts 文件是这样的 127.0.0.1 localhost 127.0.1.1 michele-System-Product-Name

以下行适用于 IPv6 可用主机

::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
- Michele

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接