cga*_*ser 5 python sockets windows networking
我不断收到这个错误
[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()
Run Code Online (Sandbox Code Playgroud)
服务器代码
# !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()
Run Code Online (Sandbox Code Playgroud)
猜测一下你的缩进,然后运行你的代码\xe2\x80\xa6,它工作得很好。*(只要我在127.0.0.1
它询问我IP时输入。)
当然,当我第二次运行客户端时(如果我没有重新启动服务器),我会收到连接拒绝错误。但这只是因为您编写的服务器一旦获得第一个连接就立即退出。所以第二次运行客户端时,没有服务器,因此操作系统拒绝连接。
\n\n您始终可以再次运行服务器,这样您就可以再次运行客户端。(除了服务器尝试绑定套接字时可能会收到 10048 错误,因为操作系统正在为以前的所有者保留它。如果您看到这种情况,请查看SO_REUSEADDR
文档。)
* 我所说的“工作得很好”是指它已连接,并在退出之前打印出以下内容:
\n\nSocket created\n127.0.0.1\n8934\nYou are connected to 127.0.0.1 with IP adress of 127.0.0.1\n
Run Code Online (Sandbox Code Playgroud)\n\n显然,它永远不会向服务器发送任何内容或接收任何返回的内容,因为服务器没有send
或recv
调用,或其他任何内容。