0

我正在尝试使用 socket 模块在 Python 中实现一个简单的 TCP 即时消息程序。当我使用 in 返回的值socket.gethostname()connect(),客户端在连接到在 localhost 上运行的 IM 服务器时工作得非常好。但是,当我使用返回的值时,客户端返回 errno 111(拒绝连接)socket.gethostbyname("localhost")。有没有办法解决这个问题?

4

1 回答 1

1

如果您在尝试时收到 111 connect,这通常意味着没有在该主机和端口上监听。

使用单线使用netcat(您可能已在除 Windows 之外的任何平台上内置,如果您不这样做也可以轻松获得),或者telnet如果您必须:

abarnert$ nc -v localhost 111
nc: connect to localhost port 111 (tcp) failed: Connection refused
nc: connect to localhost port 111 (tcp) failed: Connection refused
nc: connect to localhost port 111 (tcp) failed: Connection refused

由于 netcat 无法连接,问题不在于您的 Python 客户端,而实际上是没有可连接的内容。

这意味着您的服务器没有在 localhost:111 上侦听。

除了简要提及之外,如果不了解您的服务器的任何信息,就无法诊断,但我的第一个猜测是您正在bind((gethostname(), 111))执行10.0.0.3:111.

如果你想监听所有的主机和接口,有很多方法可以指定,但最简单的方法是:

serversocket.bind(('', 111))
于 2013-01-03T20:43:08.200 回答