Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python即时消息程序无法与errno 111连接_Python_Sockets_Tcp_Instant Messaging - Fatal编程技术网

Python即时消息程序无法与errno 111连接

Python即时消息程序无法与errno 111连接,python,sockets,tcp,instant-messaging,Python,Sockets,Tcp,Instant Messaging,我正在尝试使用套接字模块在Python中实现一个简单的TCP即时消息传递程序。当我在connect()中使用由socket.gethostname()返回的值时,当连接到本地主机上运行的IM服务器时,客户端工作得非常好。但是,当我使用socket.gethostbyname(“localhost”)返回的值时,客户端返回errno 111(连接被拒绝)。有什么方法可以解决这个问题吗?如果您在尝试连接时得到111,这通常意味着在该主机和端口上没有任何内容正在侦听 通常,使用一行程序来检查这一点比较

我正在尝试使用套接字模块在Python中实现一个简单的TCP即时消息传递程序。当我在
connect()
中使用由
socket.gethostname()
返回的值时,当连接到本地主机上运行的IM服务器时,客户端工作得非常好。但是,当我使用socket.gethostbyname(“localhost”)返回的值时,客户端返回errno 111(连接被拒绝)。有什么方法可以解决这个问题吗?

如果您在尝试连接时得到111,这通常意味着在该主机和端口上没有任何内容正在侦听

通常,使用一行程序来检查这一点比较容易(除了Windows之外,您可能在任何平台上都内置了该程序,如果您没有,也可以很容易地获得该程序),或者如果您必须:

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客户端,而在于没有可连接的东西

这意味着您的服务器未在本地主机111上侦听

除了简短的介绍之外,如果不了解您的服务器,就不可能进行诊断,但我的第一个猜测是您正在执行一个
绑定((gethostname(),111))
,这意味着它最终只能监听,比如说,
10.0.0.3:111

如果您想在所有主机和接口上侦听,可以使用多种奇特的方法来指定,但最简单的方法是:

serversocket.bind(('', 111))

服务器可能没有侦听
localhost
。您可以使用netcat或telnet进行测试,例如,
nc localhost 111
。除了简短的介绍之外,对服务器一无所知,无法进行诊断,但我的第一个猜测是,您正在执行
绑定((gethostname(),111))
,而不是
绑定(''''111)
,或类似的操作。@abarnert这不管用!非常感谢。好吧,我想我会把它变成一个答案。