我不断收到这个错误
[Errno 10061]由于目标机器主动拒绝连接,因此无法build立连接。
我正在运行Windows 7 64位,没有病毒或保护软件,并允许python通过我的防火墙(我也试过把我的防火墙完全closures,但结果相同)。 当我运行服务器并使用telnet连接就好了。 当我尝试连接到客户端的服务器失败。 任何build议,我可以尝试解决这个问题? 如果你需要更多的信息,只需要问,我会提供。
客户代码
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()
猜测一下你的缩进,然后运行你的代码……它工作的很好。*(只要我在输入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
显然它永远不会发送任何东西到服务器或接收任何回来,因为服务器没有send
或recv
调用,或其他任何东西。