在Java中模拟网络的最佳方法是什么?
理想情况下,我希望创建一个套接字的“模拟”版本,具有它们自己的输入和输出流。最后,我将使用这些流进行数据传输,而不是仅仅在java对象之间移动数据,所以我要模拟的是在实际网络中可能出现的延迟、数据丢失和其他错误。
理想情况下,这些模拟方法将非常接近java.net.*
的实际流标准,因此我不需要进行太多的重写来从模拟转移到实际的客户端。
谁能给我指明正确的方向吗?
你可以使用Akka在一台机器上创建数百万个参与者,然后组织他们之间的交流,类似于“真实的”网络。
下面是一个示例项目:https://github.com/adelbertc/scalanet
本节部分知识点来自《计算机网络(第 7 版)》 计算机网络体系结构: 各层作用及协议 分层 作用 协议 物理层 通过媒介传输比特,确定机械及电气规范(比特 Bit) RJ45、CLOCK、IEEE802.3(中继器,集线器) 数据链路层 将比特组装成帧和点到点的传递(帧 Frame) PPP、FR、HDLC、VLAN、MAC(网桥,交换机) 网络层 负责数据包从源到宿的传递和网际互连(包 Pack
计算机网络.md
概述 IP 数据报格式 IP 地址编址方式 1. 分类 2. 子网划分 3. 无分类 地址解析协议 ARP 网际控制报文协议 ICMP 1. Ping 2. Traceroute 虚拟专用网 VPN 网络地址转换 NAT 路由器的结构 路由器分组转发流程 路由选择协议 1. 内部网关协议 RIP 2. 内部网关协议 OSPF 3. 外部网关协议 BGP 概述 因为网络层是整个互联网的核心,因此应当
OSI 层 功能 应用层 网络进程到应用程序。针对特定应用规定各层协议、时序、表示等,进行封装 。在端系统中用软件来实现,如HTTP等 表示层 数据表示形式,加密和解密,把机器相关的数据转换成独立于机器的数据。规定数据的格式化表示 ,数据格式的转换等 会话层 主机间通讯,管理应用程序之间的会话。规定通信时序 ;数据交换的定界、同步,创建检查点等 传输层 在网络的各个节点之间可靠地分发数据包。所有传
HTTP最强资料大全
HTTP构建于TCP/IP协议之上,默认端口号是80。 HTTP是 无连接无状态 的。 无连接的含义是 限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。后来使用了Keep-Alive技术。 无状态是指 协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求,会给我们发送数据