在Java中模拟网络的最佳方法是什么?
我正处于网络对等项目的早期阶段,并且要确定客户端的一些必需特性,我希望能够在我的PC上同时模拟100多个实例。
理想情况下,我想创建一个套接字的“模拟”版本,它们有自己的输入和输出流。最后,我将使用这些流进行数据传输,而不是仅仅在java对象之间移动数据,因此我想要模拟的是延迟,数据丢失以及您在实际网络中可能遇到的其他错误。
理想情况下,这些模拟方法非常接近java.net.*
的实际流标准,因此我不需要进行大量重写就可以从模拟转移到实际的客户端。
有人能指出我正确的方向吗?
答案 0 :(得分:3)
您可以使用Akka在一台计算机上创建数百万个Actors,然后在它们之间组织类似于“真实”网络的通信。
这是一个示例项目: https://github.com/adelbertc/scalanet
答案 1 :(得分:1)
嗯,你真的不需要使用任何工具,但要把你的大脑设计得更好。
您需要用于下层通信框架的接口。
一旦你对接口进行编码,你只需要用虚拟实现来模拟/替换真实的实现。这个虚拟实现可以引入延迟,虚拟数据等功能。
您可以使用spring容器。您可以在容器中编写一些虚拟服务器套接字来模拟多个实例之间的对话,或者更好地使用Web容器来消除您的头痛。
答案 2 :(得分:0)