1.回声服务器简介
回声服务器指的是这样一种服务器,它接受客户端的连接,并且把收到的数据原样返回给客户端,本文将使用UDP协议实现一个回声服务器,关于UDP通讯相关方法的介绍可以参考上一篇博文:鸿蒙网络编程系列1-UDP通讯示例,最终应用的界面如下图所示:
2.实现思路
首先创建一个UDP实例,然后绑定到指定的端口,再订阅message事件,在处理该事件的时候,输出接收到的消息并且把该消息通过send方法发回客户端。
3.实现步骤
步骤1:创建Empty Ability项目。
步骤2:在module.json5配置文件加上对权限的声明:
"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
},
{
"name": "ohos.permission.GET_WIFI_INFO"
}
]
这里分别添加了访问互联网和访问WIFI信息的权限。
步骤3:在Index.ets文件里添加如下的代码:
import socket from '@ohos.net.socket';
import wifiManager from '@ohos.wifiManager';
import systemDateTime from '@ohos.systemDateTime';
import util from '@ohos.util';
import hilog from '@ohos.hilog';
//执行UDP通讯的对象
let udpSocket = socket.constructUDPSocketInstance();
//说明:本地的IP地址不是必须知道的,绑定时绑定到IP:0.0.0.0即可,显示本地IP地址的目的是方便对方发送信息过来
//本地IP的数值形式
let ipNum = wifiManager.getIpInfo().ipAddress
//本地IP的字符串形式
let localIp = (ipNum >>> 24) + '.' + (ipNum >> 16 & 0xFF) + '.' + (ipNum >> 8 & 0xFF) + '.' + (ipNum & 0xFF);
@Entry
@Component
struct Index {
//连接、通讯历史记录
@State msgHistory: string = ''
//本地端口
@State localPort: number = 9999
scroller: Scroller = new Scroller()
build() {
Row() {
Column() {
Text("UDP回声服务器")
.fontSize(14)