Python中的[Errno 111] Connection refused报错分析

又说到之前Murder的一个python输出结果引发的深入分析: 前几天测试Murder时,当没开启Tracker服务器时,在Peer下执行下载时会有如下报错:

[root@xxx_game dist]# python /usr/local/murder/dist/ peer /data/download/ /data/download/ x.x.x.x
Problem connecting to tracker - [Errno 111] Connection refused

提示已经很明显示了,不能连接到tracker,事实也是如此,我把tracker进程给关了。 起初我以为[Errno 111] Connection refused是作者自己定义的错误码, 在源码里搜索Errno 111 Connection refused,并没有搜索到相关代码。


exception socket.error

This exception is raised for socket-related errors. The accompanying value is either a string telling what went wrong or a pair (errno, string) representing an error returned by a system call, similar to the value accompanying os.error. See the module errno, which contains names for the error codes defined by the underlying operating system.


This module makes available standard errno system symbols. The value of each symbol is the corresponding integer value. The names and descriptions are borrowed from linux/include/errno.h, which should be pretty all-inclusive.

当python执行脚本时连接Track时,最终是系统创建sokcet去连接,这个过程中出错了,系统给出errno和提示。 “[Errno 111] Connection refused”这个提示是系统给出来的。 通过 man errno.h和python中的输出可以验证:

       Connection refused.
>>> import errno;
>>> print errno.ECONNREFUSED


socket — Low-level networking interface
errno — Standard errno system symbols