服务器/客户端连接(Python)
这是我的服务器代码:服务器/客户端连接(Python),python,networking,Python,Networking,这是我的服务器代码: import socket serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = "192.168.1.3" port = 8000 print (host) print (port) serversocket.bind((host, port)) serversocket.listen(5) print ('server started and listening') while
import socket
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "192.168.1.3"
port = 8000
print (host)
print (port)
serversocket.bind((host, port))
serversocket.listen(5)
print ('server started and listening')
while 1:
(clientsocket, address) = serversocket.accept()
print ("connection found!")
data = clientsocket.recv(1024).decode()
print (data)
clientsocket.send("data is sent".encode())
对于客户:
import socket
s = socket.socket()
host ="59.93.199.XXX"
port =8000
s.connect((host,port))
s.send('randomData'.encode())
data = ''
data = s.recv(1024).decode()
print (data)
s.close
我想让它在互联网上的两台计算机上运行。
当我将host=“192.168.1.3”放入客户机时,它可以正常工作,但这仅适用于连接到同一网络的计算机。
问题是,当服务器运行时,我在线检查开放端口,服务器显示“已找到连接”,但它不通过客户端连接到服务器。
我做错了什么?
8000端口是开放的
192.168.1.3是我的计算机的IP,192.168.1.1是网关
运行客户端时出现的错误:
回溯(最近一次调用上次):文件
“C:\Users\Harsh's\Desktop\aaa.py”,第6行,在
s、 connect((主机,端口))ConnectionRefusedError:[WinError 10061]无法建立连接,因为目标计算机主动拒绝
它
在互联网上的两台计算机之间
在这种情况下,您的服务器需要一个公共静态地址,或者您必须配置路由器来路由端口8000的传入连接,以便重定向(转换)到服务器(NATting、PATting等)
谁的地址是“59.93.199.XXX”?你的路由器是什么?然后,您需要执行翻译/重定向/链接
经过一些测试,问题显示为:
s = socket.socket()
而不是
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
它是定向的。www.yourgetsignal.com显示其打开状态。我有动态ip,但没有重置,为什么它不能工作?在这种情况下,将服务器绑定到它的公共地址,而不是本地地址。或者将它绑定到所有可用的接口。我是一个noob,请更详细地解释,如果我在服务器中设置host=in,它会显示错误。我认为服务器是正常的,因为当我检查开放端口时,它会显示已连接的消息。我认为问题在于客户端在服务器脚本中使用了
host='
(所有接口)。我不太喜欢Windows,但10061听起来像是路由器在转换端口,但在目标计算机上没有运行匹配的服务。