2012-10-20 12 views
23

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

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

+2

これは、サーバーマシンのファイアウォールがおそらくコードと無関係な接続をブロックしたことを意味します。 –

+0

ファイアウォールがオフ:/まだエラーが発生しています – havox

+2

VMゲストはどのようにネットワークに接続されていますか? NAT +ポート経由またはブリッジモード経由ですか? –

答えて

19

10061はWSAECONNREFUSEDです。接続が拒否されました。つまり、接続しようとしたIP:ポートでリッスンすることはありませんでした。

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

2

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

+1

つまり、ターゲットIPアドレスが間違っています。 – EJP

3

ヒント:1は、上のビン/モンゴ実行可能and the mongodb service is simply not runningを呼び出す場合actively refusedはやや深い技術的なトラブルのように聞こえるが、...

...実際には、この応答は(とも具体的errno:10061)も、与えられていますターゲットマシン。これは、ローカルマシンのインスタンスにも適用されます(すべてローカルホスト上で起こります)。

この簡単な可能性については、最初にを除外してください。つまり、コマンドラインクライアントを使用してdbにアクセスするだけです。

See here.

-1

ソリューションは、クライアントとサーバーの両方に同じIPアドレスとポート番号を使用することです。 リモートサーバーがマシンにインストールされている場合は、ここで s.connect((TCP_IP、TCP_PORT))

+0

解決策は、通常、サーバーで0.0.0.0を使用することです。 – EJP

0

ポート番号を令状= TCP_IP =「ここではIP番号を書き込み」 TCP_PORTを使用するようにクライアントに、試してみてください。 server.pyホストに "localhost"とポート番号を指定します。 クライアント側では、ローカルIP-127.0.0.1とポート番号を指定する必要があります。 その作品

+0

質問は「異なるネットワーク」に関するものであり、この回答は異なるネットワークはもちろん、同じネットワーク内の異なるホストでも機能しません。 – EJP

-1

短期的な解決策は、通常、デフォルトのiisホストとポートをそれぞれ120.0.0.1と80に使用することです。しかし、より汎用性の高いソリューションを探しています。

+0

OPが2台のマシンで実行されており、これがローカルホストの解決策であるとすれば、うまくいかないでしょうか? – roelofs

+0

そして、localhostは120.0.0.1ではなく127.0.0.1であるため、1つのホストでも機能しません。 – EJP

関連する問題