python - 使用套接字的 Python 端口转发
问题描述
我正在努力做到这一点,以便我可以从世界各地的其他网络连接到此服务器,正如您在屏幕截图中看到的那样,前提是我设置了端口转发以将外部端口 6000 上的所有请求转发到我存储的静态 IP 地址主变量。
#This is my Server
import socket
import threading
host = '192.168.1.135'
port = 6000
#s = socket.socket()
s = socket.socket()#socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen()
def send():
mess = input("--> ")
con.send(bytes(mess, 'utf-8'))
def receive():
msg = con.recv(1024)
print(msg.decode('utf-8'))
while True:
try:
con, address = s.accept()
print(f'Connection to {address} made successfully!')
receive()
send()
except:
pass
这是我下面的客户端文件,出于明显的原因,我从主机变量中取出了我的公共 IP 地址...当我尝试在连接到网络时连接时,服务器在其上运行时连接正常,在它打印的服务器文件中ip address 它将我的网络网关地址显示为连接的 ip。但是当尝试从网络外部连接时,它不起作用!
import socket
host = 'public ip'; port = 6000
def send():
mess = input('--> ')
s.send(bytes(mess,"utf-8"))
def receive():
msg = s.recv(1024)
print(msg.decode('utf-8'))
while True:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect((host, port))
send()
receive()
except:
pass
此链接将向您显示我在网络设置中设置的设置图片。
https://i.stack.imgur.com/TmNYc.png
我对整个“端口转发”的想法很陌生,但在尝试了数百种解决方案一周多之后似乎找不到问题似乎没有任何效果......如果您需要更多信息来帮助解决这个问题,请问,谢谢你!
解决方案
(我还不能添加评论)首先尝试将服务器 ip 设置为“0.0.0.0”并尝试使用服务器和客户端上的端口 6000,不要使用不同的端口并转发不同的端口
推荐阅读
- python - 从系列创建一个 pd.Dataframe
- c++ - 如何在 Eigen 中有效地初始化 SparseVector
- liquibase - 在 Sybase ASE 上运行时如何防止 Liquibase 始终恢复为自动提交
- drag-and-drop - 将放置事件从 TinyMCE 编辑器传播到父元素
- android - 如何使用 ARCore ARSceneView 放置的 AR 对象录制视频
- javascript - 如何从远程查询json服务器
- php - PHP MySql查询根据订单号返回订单的所有项目
- symfony - 许多实体关系之一
- c# - 尝试通过两个不同的选项卡登录时出现 AntiforgeryValidationException
- unit-testing - 如何在 Mockito 中模拟具有不同参数的方法的不同响应