c++ - 如何使用 Python 或 C++ 创建通用网络代理?

标签 c++ python proxy network-programming

我有一个通过局域网进行通信的应用程序。但是,我想让它通过互联网进行通信。为此,我建议制作一个中间程序,该程序将读取从一台计算机上的应用程序生成的网络流量,并将其发送到另一台计算机上的应用程序。

这涉及:

  1. 读取应用程序的传出网络流量
  2. 通过互联网将此流量的拷贝发送到另一台计算机
  3. 将此拷贝提供给另一台计算机上的应用程序

取而代之的是:

计算机A上的应用<-LAN->计算机B上的应用

我想实现这个:

A 上的应用 <--> A 上的我的程序 <-INTERNET-> B 上的我的程序 <--> B 上的应用

我可以完成 (2),但对于 (1) 和 (3),我的问题是我在网络方面的经验很少,而且我不知道从哪里开始。我可以用 Python 编程,但愿意使用 C++ 来完成。

(Hamachi 不适用于此应用程序,我不知道为什么。)

回应评论

我不打算操纵任何数据,除非有必要使连接正常工作。我无法控制应用程序本身,它没有为我提供任何配置连接的方法(端口号除外)。

TCP 和 UDP 都在端口 6112 上使用。使用的 IP 地址首先是 255.255.255.255 用于通用广播,用于发现 LAN 上的其他应用程序(使用 UDP),然后建立 TCP 连接。

最佳答案

您在原始问题中缺少的术语是 proxy。您特别需要一个透明转发代理

这是一个link to some source code在 Python 中,这将使您开始编写代理。

就是说,如果您四处搜索,您应该能够找到一个您不必自己编写的透明转发代理

如果你想以最稳健的方式做到这一点,你可以在硬件中做到这一点,并设置一个托管路由器/交换机/防火墙,将事物路由到你需要的任何地方,而无需编写任何东西。

关于c++ - 如何使用 Python 或 C++ 创建通用网络代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7337966/

相关文章:

c++ - 当结构定义在头文件中时,如何在 main() 中创建结构数组?

c++ - 如果枚举标签与类型不匹配,编译器是否应该发出警告?

python - python如何计算元组的哈希值

python - 将逗号分隔值的字符串列表写入 CSV

nginx - 如何使用 nginx 1.9.5 作为 gRPC 的反向代理?

java - Hibernate session get方法返回代理对象

c++ - 如何使用 FREEGLUT 获得多显示器的所有支持分辨率?

c++ - C++ 程序末尾的 thread_local vector 段错误

python - Tensorflow slim 训练和验证初始模型

docker - 谷歌云 SQL Docker 代理