这是我的服务器代码:
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”放在客户端时,它工作正常,但这只适用于连接到同一网络的计算机。 问题是,当服务器运行时,我在线检查开放端口,服务器显示“找到连接”,但它没有通过客户端连接到服务器。 我究竟做错了什么 ? PORT 8000已开放。
192.168.1.3是我的计算机的IP,192.168.1.1是网关 当我运行客户时我得到的错误:
Traceback(最近一次调用最后一次):文件 “C:\ Users \ Harsh's \ Desktop \ aaa.py”,第6行,in s.connect((host,port))ConnectionRefusedError:[WinError 10061]无法建立连接,因为目标计算机主动拒绝 它
答案 0 :(得分:1)
跨越互联网的两台计算机
在这种情况下,您的服务器需要一个公共的静态地址,或者您必须配置路由器以将路由8000的传入连接路由到服务器(NATting,PATting等)。(NATting,PATting等)。
谁的地址是“59.93.199.XXX”?你的路由器?然后你需要进行翻译/重定向/链接。
经过一些测试,问题显示为:
s = socket.socket()
而不是
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)