59

これらのクライアントコードとサーバーコードに問題があります。[Errno10061]を取得し続けます。ターゲットマシンがアクティブに拒否したため、接続できませんでした。

サーバーをWindowsXPSP3の仮想マシンで実行し、クライアントをWindows764ビットで実行しています。Pythonのバージョンは2.7.3です。私が知りたいのは、異なるネットワークでクライアントとサーバーを使用するためにコードをどのように編集すればよいかということです。ありがとう!

サーバー:

#!/usr/bin/python           # This is server.py file

import socket               # Import socket module
s = socket.socket()         # Create a socket object
host = '0.0.0.0' # Get local machine name
port = 12345                # Reserve a port for your service.


print 'Server started!'
print 'Waiting for clients...'

s.bind((host, port))        # Bind to the port
s.listen(5)                 # Now wait for client connection.
c, addr = s.accept()     # Establish connection with client.
print 'Got connection from', addr
while True:
  msg = c.recv(1024)
  print addr, ' >> ', msg
  msg = raw_input('SERVER >> ')
  c.send(msg);
  #c.close()                # Close the connection

クライアント :

#!/usr/bin/python           # This is client.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.

print 'Connecting to ', host, port
s.connect((host, port))

while True:
  msg = raw_input('CLIENT >> ')
  s.send(msg)
  msg = s.recv(1024)
  print 'SERVER >> ', msg
#s.close                     # Close the socket when done

PS:コードはインターネットからのものです。

4

15 に答える 15

42

10061 は WSAECONNREFUSED、「接続が拒否されました」です。これは、接続しようとした IP:ポートでリッスンしているものがないことを意味します。

2000年頃、ブロックされたポートへの着信接続を無視する代わりに拒否を発行するファイアウォール製品がありましたが、これは攻撃者への情報漏洩としてすぐに認識され、修正または撤回されました.

于 2012-10-20T23:10:20.170 に答える
6

ヒント:actively refusedやや深い技術的な問題のように聞こえますが...

...実際にerrno:10061は、bin/mongo 実行可能ファイルを呼び出し、対象のマシンでmongodb サービスが実行されていない場合にも、この応答 (および具体的には ) が返されます。これは、ローカル マシンのインスタンスにも適用されます (すべて localhost で発生します)。

この些細な可能性を最初に常に除外します。つまり、単にコマンド ライン クライアントを使用してデータベースにアクセスします。

こちらをご覧ください。

于 2016-01-24T14:13:54.957 に答える
3

https://docs.python.org/3.2/library/socketserver.htmlの例を使用し て、サーバー プログラムを実行しているマシンに HOST ポートを設定する必要があると判断しました。したがって、192.168.0.1 HOST 上の TCPServer = TCPServer IP 192.168.0.1 の場合、TCPClient 側を TCPServer IP を指すように設定する必要がありました。したがって、TCPClient HOST 値 = 192.168.0.1 - 申し訳ありませんが、それは私が説明できる最高のものです。

于 2015-04-03T03:14:34.263 に答える
2

エラーとファイアウォールの間に関係はありません。

最初にサーバー プログラムを
実行し、次に別の Python シェルでクライアント プログラムを実行します。

そしてそれはうまくいく

于 2020-05-11T19:54:58.500 に答える
2

だから私は同じ問題に直面していました、そして私のために働いた解決策は...

サーバーとクライアントのプログラムは Python で書かれていると仮定しています。

  1. まず、1 つの Python シェルを開きます
  2. 最初にサーバープログラムを開いて実行します
  3. 次に、別の別の python シェルを開きます
  4. ここでクライアントプログラムを開いて実行します
  5. 終わり !!
于 2021-03-19T12:50:09.753 に答える
0

以下の変更により、問題が解決しました。私は一週間同じエラーに苦しんでいました。host = ''解決策はサーバーとサーバーのクライアントだけにあることをすべて共有したいと思いhost = ipます。  

于 2020-01-05T08:28:35.807 に答える
-1

解決策は、クライアントとサーバーの両方で同じ IP とポート番号を使用することです。クライアントで TCP_IP = 'ここに IP 番号を書き込む' TCP_PORT = ここにポート番号を書き込む s.connect((TCP_IP, TCP_PORT))

于 2016-11-26T09:58:24.660 に答える