- Socket接口模块实现方案
- 功能描述
Socket接口模快实现OPNET系统级仿真平台与外部软件之间基于Socket通信,包括建立连接、数据传送,模块支持端口及IP地址设置。
- 实现流程
利用OPNET 开发接口模块,实现Socket 双向数据通信,包括Socket 接口节点模型、Socket 接口协议模型、Socket 控制模块三部分。
接口节点模型可以实现Socket 相关参数的配置,包括开启端口、ip地址配置、轮询时间设置。
接口协议模型利用OPNET 核心函数及外部Socket 操作函数实现。外部Socket 程序通过接口模块与OPNET 仿真进行数据交互,实现仿真运行控制、参数传递操作。
项目组利用OPNET Modeler 18.0仿真软件建立仿真模型,实现与外部Microsoft Visual Studio 2010进行基于Socket的通信,实现客户端与服务器之间的建立连接、数据传送,模块支持端口及IP地址设置。
具体如下:
1、使用OPNET Modeler 18.0仿真软件建立服务器(Socket_server)的网络模型与VS 2010建立的客户端(Client)进行Socket通信操作;
2、使用OPNET Modeler 18.0仿真软件建立客户端(Socket_client)的网络模型与VS 2010建立的服务器(Server)进行Socket通信操作;
- 使用软件
Modeler 18.0仿真软件
Microsoft Visual Studio 2010
- Socket接口模块具体实现步骤
- OPNET搭建Server仿真模型与VS搭建的Client进行通信
步骤如下:
(1)使用OPNET Modeler 18.0创建一个服务器(Socket_server)的网络模型,如下图 2所示:
图 2 网络模型
其中,Socket_server用来实现与外部VS建立的客户端(Client)进行Socket通信;Profile Config用来配置通信端口号和轮询时间。节点“0”、“1”和“2”实现内部节点的位置信息更新,在Socket_server网关收到消息后,会通过远程中断的方式来控制、反馈内部仿真节点位置信息更新操作。右击仿真场景中的Profile Config,左击选择Edit Attributes选项, 在弹出的Attributes窗口中,点击Dest_Port进行端口号Value的设置,点击tv_sec和tv_usec进行对Socket服务器轮询时间的设置,其中tv_sec和tv_usec分别表示秒和毫秒。如下图 3所示:
图 3 Attributes设置
(2)建立服务器Server的节点模型,如下图 4所示:
图 4服务器Server节点模型
(3)建立服务器Server的进程模型,如下图 5所示:
图 5服务器Socket_server进程模型
其中,在进程模型的编辑头块代码“HB”中写入实现Socket通信的头文件,在编辑函数块代码“FB”写入实现Socket通信的源代码。
(4)使用VS 2010编写外部客户端(Client)程序,生成VS_Client.exe可执行文件与OPNET进行Socket通信。该解决方案可以实现对不同类型数据的发送,并能对仿真运行进行控制。
“send X”(X表示用户想要发送到OPNET服务器的字符串)命令可以实现对字符串X的发送;
“add X Y Z”(X代表某一节点,Y和Z分别代表期待移动到的纬度和经度)命令为节点的移动指明了对象和相应的经纬度;
quit命令可以实现对OPNET服务器的关闭,使连接中断;
其中VS客户端的解决方案如下图 6所示:
图 6 VS客户端的解决方案
(5)开启Socket服务器:右击仿真场景中Profile Config进行端口号和轮询时间的设置,运行仿真即开启Socket服务器。
(6)开启Socket客户端: 运行步骤(4)生成的VS_Client.exe执行文件即开启Socket客户端,按照提示输入IP地址和端口号与OPNET搭建的Socket服务器建立连接,然后进行数据传输。
实现功能:OPNET搭建的服务器仿真场景中,节点Profile Config可以实现对端口号和轮询时间的设置;节点server可以实现与外部VS程序进行Socket通信;外部程序VS 2010建立的Client客户端可以实现输入IP地址和端口号与OPNET搭建的Socket服务器建立连接,然后进行数据传输。开始时外部的VS(客户端)发送数据(节点的位置信息)到OPNET的网关Socket_server,网关Socket_server收到数据以后会利用远程中断的方式使节点(0、1或2)移动,而在网关调用远程中断之后会立刻发送位置信息到外部的VS。
- OPNET搭建Client仿真模型与VS搭建的Server进行通信
步骤如下:
(1)使用OPNET Modeler 18.0创建一个客户端(Socket_client)的网络模型,如下图 7所示:
图 7 网络模型
其中,Client用来实现与外部VS建立的服务器(Server)进行Socket通信;Profile Config用来配置端口号和IP地址。节点“0”、“1”和“2”实现内部节点的位置信息更新,在Socket_server网关收到消息后,会通过远程中断的方式来控制、反馈内部仿真节点位置信息更新操作。右击仿真场景中的Profile Config,左击选择Edit Attributes选项, 在弹出的Attributes窗口中,点击Dest_IP_Address进行IP地址的设置,点击Dest_Port进行端口号Value的设置。如下图 8所示:
图 8 Attributes设置
(2)建立客户端(Client)的节点模型,如下图 9所示:
图 9 客户端(Client)节点模型
(3)建立服客户端(Client)的进程模型,如下图 10所示:
10 客户端(Socket_client)进程模型
(4)使用VS 2010编写外部服务器(Server)程序,生成VS_Server.exe可执行文件与OPNET进行Socket通信。该解决方案可以实现对不同类型数据的发送,并能对仿真运行进行控制。
“send X”(X表示用户想要发送到OPNET客户端的字符串)命令可以实现对字符串X的发送;
“add a b”命令指明了移动的节点对象以及相应的位置坐标;
“quit”命令可以实现对OPNET客户端的关闭,使连接中断;
其中VS服务器的解决方案如下图 11所示:
图 11 VS服务器的解决方案
(5)开启OPNET Socket客户端:右击仿真场景中Profile Config进行端口号和IP地址的设置,运行仿真即开启OPNET Socket客户端。
(6)开启VS服务器:运行步骤(4)生成的VS_Server.exe执行文件即开启Socket服务器,按照提示输入端口号与OPNET搭建的Socket客户端建立连接,然后进行数据传输。
实现功能:OPNET搭建的客户端仿真场景中,节点Profile Config可以实现对端口号和IP地址的设置;节点Socket_client可以实现与外部VS程序进行Socket通信;外部程序VS 2010建立的Server服务器可以实现输入端口号与OPNET搭建的Socket客户端建立连接,然后进行数据传输;可以实现指定节点的移动,使指定节点按照给定的位置移动。开始时外部的VS(服务器)发送数据(节点的位置信息)到OPNET的网关Socket_client,网关Socket_server收到数据以后会利用远程中断的方式使节点(0、1或2)移动,而在网关调用远程中断之后会立刻发送位置信息到外部的VS。



