【发布时间】:2011-04-15 15:57:38
【问题描述】:
我不太确定从哪里开始,但我假设我需要某种网络驱动程序来捕获所有的 UDP 流量。 (请告诉我哪一个是最好的记录和工作)
在我成功捕获 C# 中的 UDP 数据包后,我将通过 TCP 连接将它们发送到我的服务器,我需要将 UDP 发送到目的地,然后将响应发送回客户端计算机(即捕获数据包),然后将响应发送到程序,就好像它直接来自相关服务器一样。
所以基本上我的连接如下:
Client running UDP program <<==TCP connection==>> Conversion Server <<==UDP connection==>> UDP Server
我需要帮助的要点:
- 从程序中捕获 UDP 数据包(使用网络驱动程序)
- 将从服务器获得的响应发送回程序(使用相同的网络驱动程序????)
编辑#1
好吧,让我澄清一下。我的电脑上有一个程序,我无法控制。我没有它的源,没有办法修改源,我不能使用注入技术告诉它做一些不同的事情。当然,它使用 UDP 连接服务器,我需要它来工作。
现在,我需要让该程序运行,但是我在一个不允许 UDP 流量的安全网络后面(不要问)。我需要创建一个网络驱动程序来捕获我计算机上所有程序生成的所有 UDP 流量,将其发送到专用服务器(我将在其中编写一个服务器守护程序来将 TCP 转换为 UDP 并将其发送到原目的地)。
【问题讨论】:
-
您可以将您的程序指向任何 IP 地址还是硬编码?原因是,如果您可以将其作为服务器,您可以创建代理服务器,这会使事情变得更容易。
-
运行 UDP 的程序是硬编码的,我不能使用注入 - 这就是为什么我说我需要一个网络驱动程序来拦截数据包。
-
我很好奇,为什么您的应用程序会桥接 UDP 和 TCP 流量?
-
@MikePennington 它在不允许 UDP 连接的受限网络环境中运行。 VPN 太昂贵了——它会重定向所有流量。由于 TCP 连接很好(而且更常见),它会减慢整个系统的速度。这就是为什么要创建类似 VPN 的设置,但仅适用于 UDP 数据包。
标签: c# tcp udp encapsulation