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.1它要求我输入 IP 时输入。)

当然,我第二次运行客户端时(如果我没有重新启动服务器)我得到一个连接被拒绝的错误。但这只是因为您编写了一个服务器,该服务器在获得第一个连接后立即退出。所以第二次运行客户端时,没有服务器,所以操作系统拒绝连接。

您总是可以再次运行服务器,这样您就可以再运行一次客户端。(除了服务器在尝试绑定套接字时可能会收到 10048 错误,因为操作系统会为之前的所有者保留它。如果您看到,请查看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 回答