智网妙算回显应用模型
EchoApp 是一个基于 UDP 的应用层回显服务模型,用于在妙算仿真中测试网络连通性和数据传输。该模型模拟客户端-服务器架构的回显应用:
- 服务器模式:监听指定端口,接收客户端消息并返回带有 "Echo: " 前缀的响应
- 客户端模式:定期向服务器发送消息,验证通信是否正常
模型支持通过 UDP 协议进行网络通信,需要与 UDP 传输层模型配合使用。
EchoApp 模型在 models/echo_app.pr.m 中定义,具有以下可配置属性:
| 属性名 | 标签 | 类型 | 默认值 | 可选值 | 描述 |
|---|---|---|---|---|---|
role |
角色 | string | "server" | "server", "client" | 应用运行模式:服务端或客户端 |
dest |
目的地址 | string | "192.168.2.10" | 任意有效IPv4地址 | 客户端模式下的目标服务器地址 |
EchoApp 采用三状态设计:
- Wait(等待状态):初始状态,短暂等待后进入 Init 状态
- Init(初始化状态):完成模型初始化和 UDP 端口注册
- Idle(空闲状态):主要工作状态,处理消息收发
- 参数验证:读取并验证
role和dest配置参数 - UDP 注册:通过
udp_commandICI 向 UDP 模型注册端口监听- 监听端口:8100(默认)
- 发送端口:8900(默认)
服务器模式行为:
- 监听 8100 端口接收客户端消息
- 收到消息后,自动回复
Echo: {原消息}格式的响应 - 通过源地址直接回复给客户端
客户端模式行为:
- 每 1 秒向配置的服务器地址发送一次消息
- 消息格式:
Hello from client: {仿真时间} - 发送到服务器的 8100 端口
EchoApp 使用自定义的数据包格式,主要字段如下:
data(类型:type = 4,字符串,最大80字符)- 承载应用层数据,支持中文和英文字符
- 服务端口:8100(用于接收消息)
- 发送端口:8900(用于发送消息)
模型使用以下 ICI 与 UDP 层交互:
UDP 注册 ICI(udp_command):
command:设为 "listen" 进行端口监听local port:监听端口号(8100)app module id:应用模块 ID
UDP 发送 ICI(udp_ind):
remote address:目标 IP 地址remote port:目标端口(8100)local port:本地端口(8900)
{
"role": "server",
"dest": "192.168.2.10"
}{
"role": "client",
"dest": "192.168.2.20"
}- 底层传输:需要 UDP 传输层模型支持
- 网络层:依赖 IP 模型进行路由和转发
- 仿真平台:基于智网妙算(Miaosuan)仿真平台
- 编程语言:Python 3.x
- 仿真框架:Miaosuan Python API
- 协议栈:应用层 → UDP → IP
- 数据格式:自定义字符串格式
- 最大数据长度:80 字符