5

このエラーが発生し続けます

[Errno 10061] ターゲット マシンがアクティブに拒否したため、接続できませんでした。

私はWindows 7 64ビットを実行しており、ウイルスや保護ソフトウェアはありません.Pythonはファイアウォールを通過できます(ファイアウォールを完全にオフにしようとしましたが、結果は同じです)。サーバーを実行してtelnetを使用すると、問題なく接続できます。クライアントでサーバーに接続しようとすると失敗します。これを修正するために何ができるかについての提案はありますか? さらに情報が必要な場合は、お尋ねください。提供します。

クライアントコード

import socket
import sys
def main():
   host = ""
   port = 8934
   message = "Hello World!"

   host = raw_input("Enter IP: ")
   #Create Socket
   try:
      s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   except socket.error, msg:
      print "Failed to create socket. Error code: %s Error Message: %s"%(str(msg[0]),msg[1])
      sys.exit()
   print "Socket created"

   #Connec to Server
   print host
   print port
   s.connect((host,port))
   print "You are connected to %s with IP adress of %s"%(host,host)

   #Send Data
   try:
      s.sendall(message)
   except socket.error:
      print "Failed to send."
   #Receive Data
      reply = s.recv(4096)

if __name__ == "__main__":
   main()

サーバーコード

# !usr/bin/python

import socket
import sys

HOST = ""
PORT = 8934

def main():
   #Setup socket
   try:
      s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   except socket.error,msg:
      print "Unable to create socket"
      sys.exit()
   print "Socket created."

   #Bind to adress
   try:
      s.bind((HOST,PORT))
   except socket.error,msg:
      print "Bind failed. Closing..."
      sys.exit()
   print "Socket bound."

   #Start listening
   s.listen(10)
   print "Socket Listening"

   #Accept connection
   conn, addr = s.accept()
   print "Connected to %s:%s"%(addr[0],addr[1])

if __name__ == "__main__":
   main()
4

1 に答える 1

3

インデントを推測して、コードを実行すると…問題なく動作します* ( 127.0.0.1IP を尋ねられたときに入力する限り)。

もちろん、クライアントを 2 回目に実行すると (サーバーを再起動していない場合)、接続拒否エラーが発生します。しかし、それは、最初の接続を取得するとすぐに終了するサーバーをコーディングしたためです。したがって、クライアントを 2 回目に実行すると、サーバーがないため、OS は接続を拒否します。

サーバーはいつでも再実行できるため、クライアントをもう一度実行できます。(サーバーがソケットをバインドしようとすると、10048 エラーが発生する場合があります。これは、OS が以前の所有者のためにソケットを保持しているためです。それが表示された場合SO_REUSEADDRは、ドキュメントを参照してください。)

* 「正常に動作する」とは、終了する前に接続し、次のように出力することを意味します。

Socket created
127.0.0.1
8934
You are connected to 127.0.0.1 with IP adress of 127.0.0.1

サーバーには何もないため、サーバーに何かを送信したり、何かを受信したりすることはありませsendrecv

于 2012-12-08T00:23:34.817 に答える