web-dev-qa-db-ja.com

Errno 10061:ターゲットマシンがアクティブに拒否したため、接続できませんでした(クライアント-サーバー)

これらのクライアントコードとサーバーコードに問題があります。[Errno 10061]ターゲットマシンが積極的に拒否したため、接続できませんでした

Windows XP SP3とWindows 7 64ビットのクライアントを使用する仮想マシンでサーバーを実行しています。私の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:コードはインターネットからです。

40
havox

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

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

26
user207421

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

...実際、bin/mongo実行可能ファイルを呼び出すと、この応答(および具体的にはerrno:10061)も提供されます およびmongodbサービスは単に実行されていません ターゲットマシンで。これはローカルマシンインスタンスにも当てはまります(すべてローカルホストで発生します)。

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

こちらをご覧ください

5
Frank Nocke

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

2
purza95

マシンにリモートサーバーがインストールされている場合。 server.pyホストに「localhost」とポート番号を指定します。次にクライアント側では、ローカルIP-127.0.0.1とポート番号を指定する必要があります。その後、その作品

RESTライブラリを使用してpython AP​​Iを呼び出していたときに、サーバーがスリープモードに移行していることがわかったため、同様の問題に直面していました。リモートデスクトップ接続経由でサーバーにログインするとすぐに、API呼び出しが機能していました。

0