在单台计算机上模拟p2p网络流量

在Java中模拟网络的最佳方式是什么?

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

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

理想情况下,这些仿真方法将非常接近java.net.*的实际流标准,所以我不需要做大量重写就可以从仿真转移到实际客户端。

任何人都可以将我指向正确的方向吗?


您可以使用Akka在单台机器上创建数百万演员,然后组织他们之间的通信,类似于“真实”网络。

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


那么你并不需要使用任何工具,只需要将自己的大脑设计得更好。

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

您所需要的只是在您针对接口进行编码后,用虚拟实现模拟/替换实际实现。此虚拟实现可以引入延迟,虚拟数据等功能。

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


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

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

链接地址: http://www.djcxy.com/p/71401.html

上一篇: Simulate p2p network traffic on a single computer

下一篇: Detect one's or two's complement architecture in C++?