ソケットモジュールを使用して、Pythonで単純なTCPインスタントメッセージングプログラムを実装しようとしています。で返された値を使用するとsocket.gethostname()
、connect()
ローカルホストで実行されているIMサーバーに接続するときにクライアントは完全に正常に機能します。ただし、によって返された値を使用すると、クライアントはerrno 111(接続が拒否されました)を返しますsocket.gethostbyname("localhost")
。この問題を解決する方法はありますか?
質問する
2345 次
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 に答える