Python 我可以通过internet将消息套接字到已知的专用IP吗?

Python 我可以通过internet将消息套接字到已知的专用IP吗?,python,sockets,private,public,Python,Sockets,Private,Public,我无法找到一个答案,因为我搜索,我试图认为我的问题的答案是否定的 但是如果我知道一个客户端的公共和私有ip,它有一个套接字服务器来接收消息 问题是我是否可以在不必从路由器进行端口转发的情况下向它发送消息 发送消息的python套接字的示例代码: import socket sock = socket.socket() host = "98.87.451.123" port = 45555 connection = sock.connect((host, port))

我无法找到一个答案,因为我搜索,我试图认为我的问题的答案是否定的

但是如果我知道一个客户端的公共和私有ip,它有一个套接字服务器来接收消息

问题是我是否可以在不必从路由器进行端口转发的情况下向它发送消息

发送消息的python套接字的示例代码:

import socket

sock = socket.socket()

host = "98.87.451.123"
port = 45555

connection = sock.connect((host, port))

message = "5#4#3"
sock.send(message)

data = ""

while len(data) < len(message):
    data += sock.recv(1)

print(data)

sock.close()
导入套接字
sock=socket.socket()
host=“98.87.451.123”
端口=45555
连接=sock.connect((主机、端口))
message=“5#4#3”
sock.send(消息)
data=“”
而len(数据)
是否可以连接主机上的公用ip和专用ip?大概是这样的:

host=“98.87.451.123/192.168.1.10”


所以路由器知道在哪里转发此消息?

不!不可能。如果这是可能的,我们就不需要IPv6了


IP包中有一个目标地址。它不能有多个目标地址。没有“转交”地址。

代理在TCP/UDP/中不能直接进行。。。它本身原则上,您可以使用诸如TCP打孔之类的黑魔法,但在应用程序中假设适当的网络设置并花时间在路由器中添加端口转发实际上要简单得多。我知道,但是,如果全球不同家庭中有多台机器,而您希望它们有一个套接字监听服务器的更改,则无法告诉所有这些人这样做。如果您有一台服务器,他们应该只打开与服务器的连接。TCP连接只有一个方向必须是公共的。您是如何做到这一点的?你什么意思?我不太明白。客户机自然应该能够连接到服务器,因为它是服务器的客户机。如果只是没有关闭此连接,服务器可以使用固定连接向客户端发送消息。