7

用 Java 模拟网络的最佳方法是什么?

我正处于联网对等项目的早期阶段,为了确定客户端的一些必需特性,我希望能够在我的 PC 上同时模拟 100 多个实例。

理想情况下,我想创建一个“模拟”版本的套接字,它们有自己的输入和输出流。最终,我将使用这些流进行数据传输,而不仅仅是在 java 对象之间移动数据,所以我想要模拟的是在实际网络中可能遇到的延迟、数据丢失和其他错误。

理想情况下,这些模拟方法将非常接近 的实际流标准java.net.*,因此我不需要进行大量重写即可从模拟转移到实际客户端。

谁能指出我正确的方向?

4

3 回答 3

3

您可以使用Akka在一台机器上创建数百万个 Actor,然后像“真实”网络一样组织它们之间的通信。

这是一个示例项目: https ://github.com/adelbertc/scalanet

于 2013-05-11T12:16:00.587 回答
1

好吧,您实际上并不需要使用任何工具,而是要动用脑筋来更好地设计它。

您需要底层通信框架的接口。

一旦你对接口进行了编码,你所需要的就是用一个虚拟的实现来模拟/替换真实的实现。这个虚拟实现可以引入延迟、虚拟数据等特性。

您可以使用 spring 容器。您可以在容器中编写一些虚拟服务器套接字来模拟多个实例之间的对话,或者更好地使用 Web 容器来消除您的头痛。

于 2013-05-21T12:35:41.400 回答
0

出于模拟目的,您可能需要检查Omnet++,我非常适合使用内置数据分析/统计工具进行大规模模拟。编写类似于 c++,请参阅教程,它非常简单。

示例 6 主机网络(取自 Omnet++ 教程)

于 2013-05-19T12:36:25.217 回答