これらのクライアントコードとサーバーコードに問題があります。[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:コードはインターネットからです。
10061はWSAECONNREFUSED、「接続拒否」です。つまり、接続しようとしたIP:ポートでリッスンしていないことを意味します。
ブロックされたポートへの着信接続を無視する代わりに拒否を発行したファイアウォール製品が2000年頃にありましたが、これは攻撃者への情報漏洩としてすぐに認識され、修正または撤回されました。
ヒント:actively refused
はやや深い技術的問題のように聞こえますが、...
...実際、bin/mongo実行可能ファイルを呼び出すと、この応答(および具体的にはerrno:10061
)も提供されます およびmongodbサービスは単に実行されていません ターゲットマシンで。これはローカルマシンインスタンスにも当てはまります(すべてローカルホストで発生します)。
➪この些細な可能性を常に最初に除外します。つまり、単にコマンドラインクライアントを使用してデータベースにアクセスします。
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-申し訳ありませんが、それは私が説明できる最高のものです。
マシンにリモートサーバーがインストールされている場合。 server.pyホストに「localhost」とポート番号を指定します。次にクライアント側では、ローカルIP-127.0.0.1とポート番号を指定する必要があります。その後、その作品
RESTライブラリを使用してpython APIを呼び出していたときに、サーバーがスリープモードに移行していることがわかったため、同様の問題に直面していました。リモートデスクトップ接続経由でサーバーにログインするとすぐに、API呼び出しが機能していました。