java - 更改 tcp/ip 数据包 c++ 或 java

标签 java c tcp packets

情况是这样的。网络中有服务器和客户端。他们这样交流:

  1. 客户端发送对某些功能的请求。
  2. 服务器向客户端发送函数参数。
  3. 客户端尝试执行功能并向服务器发送应答。
  4. 服务器向客户端发送应显示的数据。

但有时客户端无法执行功能并发送错误。我想捕获步骤 2 中的所有数据包,分析它们(我已经有相应的工具),防止其中一些数据包到达客户端,用我的程序处理它们并像步骤 3 中那样形成数据包。这必须在客户端上完成边。我无法访问服务器或客户端。

所以,问题是:在 C++ 或 Java 中是否有用于更改、注入(inject)和删除 tcp/ip 数据包的库?该解决方案应该适用于 Win 和 Linux 系统。 另外,您可能有更好的想法来扩展客户端功能吗?

感谢您的帮助! 我试图用谷歌搜索如何更改数据包,但我得到的只是未回答的问题和嗅探器=(

编辑:实际上,我真的不需要注入(inject)和删除数据包,我只需更改数据包数据即可管理它。而且,同一个数据包中不存在多个请求,跨多个数据包的单个请求也不会出现问题。

最佳答案

您必须为您的服务器构建一个代理。客户端连接到代理,代理本身连接到服务器。它只是在客户端和服务器之间路由所有包。

但它现在能够拦截特定消息并修改它们。想象一个过滤 HTTP 代理,它的工作方式是相同的。

关于java - 更改 tcp/ip 数据包 c++ 或 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9206447/

相关文章:

c++ - Boost Asio - 服务器没有收到消息

tcp - Spring 集成。 TCP 服务器工厂

java - 连接到本地 Web 服务的 Android 模拟器

java - 我的投票系统已经很好但是

c++ - WSASend 是否将所有 WSABUF 缓冲区作为单个数据包发送?

c - 知识树中的段错误

将字符串复制到另一个 C

java - NullPointerException应该叫NullReferenceException吗?

java - Jsp - 获取所有以字符开头的参数

c# - 为什么异步客户端 TCP 操作的性能似乎比同步 TCP 操作差?