本文概述
-
问题背景:由于缺少HarmonyOS NEXT 真机,无法处理网络互通测试需求。因此,尝试探索模拟器互通
-
环境准备:
-
安装最新版DevEco Studio
-
[申请最新版模拟器]
-
-
新建两个模拟器
-
演示视频:工程结构 + 操作方法 + 运行效果
核心步骤
-
由于两个模拟器均位于同一
PC
,其IP
及端口号均一致,因此,我需做端口转发即可 -
使用
hdc
查询模拟器id 与模拟器对应关系:需提前打开模拟器-
概述:
-
红色框内即为模拟器id
-
只开一个,并执行
hdc list targets
即可进行区分
-
-
对应关系:
127.0.0.1:5554
对应Huawei_Phone
,将其用作客户端127.0.0.1:5557
对应Huawei_Phone_New
,将其用作服务端
-
-
端口转发:对服务端进行端口转发
-
概述:
- 假设模拟器实例我们指定为
socket tcp
服务端A:127.0.0.1:5555
,监听端口为8088
,客户端B:127.0.0.1:5557
,监听端口为8089
- 则在终端执行端口转发命令:
hdc-t127.0.0.1:5555 fport tcp:8088 tcp:8089
- 特别注意事项:模拟器中
socke
(服务端代码监听的本机地址为:127.0.0.1
.不是10.0.2.15
,端口为8088
,客户端socket
本机配置地址:10.0.2.15:12340
(端囗可随意),连接地址:10.0.2.2:8089
- 假设模拟器实例我们指定为
-
执行命令
hdc -t 127.0.0.1:5557 fport ls//查询端口转发任务 hdc -t 127.0.0.1:5557 fport tcp:8089 tcp:8088//执行端口转发任务
-
运行截图:
-
第一条:此时无端口转发任务
-
第二条:执行端口转发任务
-
第三条:查询端口转发任务,佐证第二条是否执行成功
-
-
代码运行步骤
- 先运行服务端,再运行客户端
- 详细步骤,请查阅演示视频
完整代码
-
公共参数:
InfoObject.ets
export class InfoObject{ messageNumber: number = 0//共计收到多少条消息 receiveMsg: string = "默认值"//接收的消息的字面量 ipAddress: string = "默认值"//通信对方的IP 地址 portNumber: number = 0//通信对方的端口号 protocolType: string = "默认值"//通信对方所采用的协议类型 sizeMsg: number = 0//消息的字节数 constructor(messageNumber: number,receiveMsg: string,ipAddress: string,portNumber: number,protocolType: string,sizeMsg: number) { this.messageNumber = messageNumber this.receiveMsg = receiveMsg this.