【问题标题】:Can i socket message to a known private IP through internet?我可以通过互联网将消息连接到已知的私有 IP 吗?
【发布时间】:2021-01-09 16:57:31
【问题描述】:

我找不到像我搜索的那样多的答案,我试图认为我的问题的答案是否定的。

但是,如果我知道启用了套接字服务器以接收消息的客户端的公共和私有 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()

是否可以连接主机上的公共 IP 和私有 IP?像这样的:

host = "98.87.451.123/192.168.1.10"

那么路由器知道将这条消息转发到哪里?

【问题讨论】:

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

标签: python sockets private public


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 2015-07-20
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多