Py学习  »  Python

无法远程连接到python套接字

Maks Ovnik • 4 年前 • 405 次点击  

我已经创建了一个使用python sockets和tkinter的聊天应用程序,它在本地工作得很好,但是客户端无法远程连接到服务器(当我输入我的公共IP地址作为主机时),我已经完全端口转发了我的网络,我知道如何很好地进行端口转发,以及当我运行一个在线端口打开扫描器时检查一个端口是否打开,它表明该端口已打开!?

我已经在多个端口上转发了我的路由器,并相应地更新了客户机和服务器,但是客户机和telnet仍然无法连接。我还禁用了所有的Windows防火墙,禁用了所有的路由器防火墙。

下面是一个非常简单的socket客户机和服务器模型,我正试图用它来解决我的问题。

服务器

import socket

s = socket.socket()
host='0.0.0.0'

port = 2000
s.bind((host,port))

s.listen(5)
while True:
    c, addr = s.accept()
    print ("Got a connection from: ", addr)
    c.send(bytes("Thanks for connecting",'utf8'))
    c.close()

顾客

import socket 

s = socket.socket()  
port = 2000    

s.connect(("109.156.114.183", port))
print (s.recv(1024))
s.close

远程登录

C:\Users\Maks>telnet 109.156.114.183 2000
Connecting To 109.156.114.183...Could not open connection to the host, on port 2000: Connect failed

当我尝试连接到127.0.0.1或本地主机上的服务器或本地网络中的服务器时,客户机连接良好,telnet也可以连接。我有200%的把握我正确转发了端口,因为当我运行一个端口打开扫描时,它显示端口(2000)打开了。

请帮助! 谢谢- 马克斯

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/33608
 
405 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Steffen Ullrich
Reply   •   1 楼
Steffen Ullrich    4 年前

我在家,所以我的网络上根本没有防火墙。

那条评论是解决你问题的缺失部分。实际上,您并不像您的问题所暗示的那样从远程连接,但您试图从本地网络内部连接到路由器的外部可见地址。

某些路由器支持这种设置,而其他路由器不支持这种设置。看起来你的路由器不支持它。有关详细信息,请参阅 NAT hairpinning (or NAT loopback) .