范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

鸿蒙上实现简单的聊天功能

  需求分析:连接指定 IP 和端口 显示接收的内容 具有发送的功能
  控件介绍 ①Socket 连接场景介绍:应用通过 Socket 进行数据传输,支持 TCP 和 UDP 两种协议。接口说明:Socket 连接主要由 socket 模块提供。具体接口说明如下表。
  基本例程(参考我之前的家庭医生终端系统): import socket from "@ohos.net.socket"; let tcp = socket.constructTCPSocketInstance();  tcp.bind({address: "0.0.0.0", port: 12121, family: 1}, err => {   if (err) {     console.log("bind fail");     return;   }   console.log("bind success"); })  tcp.on("message", value => {   console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo)   let da = resolveArrayBuffer(value.message);   let dat_buff = String(da); //此处对接受到的数据进行处理    }); //将接受到的数据转化为文本型            function resolveArrayBuffer(message){    if (message instanceof ArrayBuffer) {     let dataView = new DataView(message)     let str = ""     for (let i = 0;i < dataView.byteLength; ++i) {       let c = String.fromCharCode(dataView.getUint8(i))       if (c !== " ") {         str += c       }     }     return str;   } } //数据的发送函数 function send_once(Con_buff) {   if (flag == false) {      let promise = tcp.connect({ address: { address: "xxx.xxx.xxx.xxx", port: xxxx, family: 1 }, timeout: 2000 });     promise.then(() => {       console.log("connect success");       flag = true;       tcp.send({         data: Con_buff       }, err => {         if (err) {           console.log("send fail");           return;         }         console.log("send success");       })     }).catch(err => {       console.log("connect fail");     });    } else if (flag == true) {     tcp.send({       data: Con_buff     }, err => {       if (err) {         console.log("send fail");         return;       }       console.log("send success");     })   } }②AppStorage 与组件同步
  在管理组件拥有的状态中,已经定义了如何将组件的状态变量与父组件或祖先组件中的 @State 装饰的状态变量同步,主要包括 @Prop、@Link、@Consume。
  本章节定义如何将组件变量与 AppStorage 同步,主要提供 @StorageLink 和 @StorageProp 装饰器。 @StorageLink 装饰器
  组件通过使用 @StorageLink(key) 装饰的状态变量,与 AppStorage 建立双向数据绑定,key 为 AppStorage 中的属性键值。
  当创建包含 @StorageLink 的状态变量的组件时,该状态变量的值将使用 AppStorage 中的值进行初始化。
  在 UI 组件中对 @StorageLink 的状态变量所做的更改将同步到 AppStorage,并从 AppStorage 同步到任何其他绑定实例中,如 PersistentStorage 或其他绑定的 UI 组件。 @StorageProp 装饰器
  组件通过使用 @StorageProp(key) 装饰的状态变量,将与 AppStorage 建立单向数据绑定,key 标识 AppStorage 中的属性键值。
  当创建包含 @StoageProp 的状态变量的组件时,该状态变量的值将使用 AppStorage 中的值进行初始化。
  AppStorage 中的属性值的更改会导致绑定的 UI 组件进行状态更新。 let varA = AppStorage.Link("varA") let envLang = AppStorage.Prop("languageCode") @Entry @Component struct ComponentA {   @StorageLink("varA") varA: number = 2   @StorageProp("languageCode") lang: string = "en"   private label: string = "count"    private aboutToAppear() {     this.label = (this.lang === "zh") ? "数" : "Count"   }    build() {     Row({ space: 20 }) {        Button(`${this.label}: ${this.varA}`)         .onClick(() => {           AppStorage.Set("varA", AppStorage.Get("varA") + 1)         })       Button(`lang: ${this.lang}`)         .onClick(() => {           if (this.lang === "zh") {             AppStorage.Set("languageCode", "en")           } else {             AppStorage.Set("languageCode", "zh")           }           this.label = (this.lang === "zh") ? "数" : "Count"         })     }   } }
  即通过 AppStorage.Link 和 @StorageLink 的方式,可实现外部动态刷新 Text 组件和 image 组件(等等之类都可以),方便我们在全局调用时更新数据。
  UI 设计
  本项目的基本内容是可以在预览器中看到的,所以先在预览器中简单设计 UI。 ①基本界面
  以后不会大时间讲解 UI 了,会直接放成品,且我的源码都在 Gitee 仓上存在,需要的可以自己下载,会着重体现程序部分。 ②接口绑定
  首先是接收框处的变量绑定: let Rc_message = AppStorage.Link("Rc_message") @StorageLink("Rc_message") Rc_message: String = "收到消息"       Text(`${this.Rc_message}`)         .width("98%")         .height("35%")         .borderStyle(BorderStyle.Solid).borderWidth(8).borderColor(0xAFEEEE).borderRadius(20)         .fontSize(25)
  ③TCP 回调设置 tcp.on("message", value => {   console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo)   let da = resolveArrayBuffer(value.message);   let dat_buff = String(da);   AppStorage.Set("Rc_message",dat_buff); //AppStorage.Set("ID_1_stata","rgba(0, 109, 229, 0.95)"); });
  该部分实现聊天框内部的文字刷新。 ④IP 设置​
  这里我是使用的合宙的 TCP 工具[wstool (luatos.com)](
  在此处修改 IP 和端口:
  ⑤远端模拟器
  在模拟器中打开如上。
  实际测试
  使用模拟器进行发送:
  在 TCP 工具处有接收到内容,此时进行回复。
  在 APP 端可以接收到并显示(暂时可能只支持英文接受显示)。
  动态图
  TCP 助手显示如下:
  本项目 Gitee 仓地址:https://gitee.com/lalhan/eTs_Study

体表肿瘤之皮脂腺囊肿知多少皮脂腺囊肿是由皮脂腺导管堵塞后腺体分泌物积聚所形成的囊肿。临床十分常见,特别是在皮脂分泌旺盛的年青人身上更是常见。皮脂腺囊肿通常好发于头皮及颜面部,颈胸部其次。因内容物的多少呈现大详解牛仔裤画法的教程世界上第一条牛仔裤的诞生,标志着人类社会对着装的一场革命舒适的材质触感百搭的视觉效果百变的款式色彩永不OUT的时尚元素。下面本文就站在绘画的角度为大家全面解析牛仔裤这一特殊材质应该你披发还是扎发好看?别再搞错了!不仅显脸大还显老前面的文章,讲了怎么根据自己的脸型,选择合适的发型。不少美女留言说,有没有简单的发型,上班还要带孩子,没有那么多时间和心思打理头发。今天,就给大家讲讲最简单的发型,那就是披发或者扎世界杯0胜加纳两队双双出局北京时间2022年12月2日2300,卡塔尔世界杯小组赛H组第三轮,加纳对阵乌拉圭。上半场,苏亚雷斯送出两次助攻,德阿拉斯卡埃塔梅开二度,乌拉圭队最终20战胜加纳,位列小组第三被淘卡塔尔世界杯女裁判,登场新华社多哈12月2日电(记者郑昕刘旸)很少有一件事,能让世界杯上剑拔弩张的两支球队在赛前达成共识。11月30日,德国队与哥斯达黎加队出席新闻发布会的将帅一共四人,在面对同样的问题时亚洲之光!世界杯16强第15队出炉,韩国队力压乌拉圭晋级2022年卡塔尔世界杯,截至12月3日凌晨,H组第三轮激战结束。随着这2场比赛的落下帷幕,本届世界杯第15支16强球队出炉。末轮韩国队绝杀葡萄牙,以总进球数优势力压乌拉圭晋级,成为卡塔尔世界杯G组喀麦隆战胜巴西12月2日,巴西队球员安东尼(右)在比赛中倒地。新华社记者兰红光摄当日,在卡塔尔卢赛尔球场进行的2022卡塔尔世界杯足球赛G组比赛中,喀麦隆队以1比0战胜巴西队。12月2日,巴西队世界杯最有争议的判罚!日本第二球是否有效?显示皮球明显出界世界杯小组赛最后一轮,日本2比1逆转西班牙,但对于日本队的第二个进球是否有效,球迷进行了热议。这场比赛,日本第51分钟反超,堂安律禁区右侧斜传,三笘薫禁区左侧底线附近传回,田中碧门追光丨史上第一位执法男足世界杯的女性主裁判登场了记录是用来改写的多哈时间12月1日2022卡塔尔世界杯小组赛E组第三轮德国队对阵哥斯达黎加队随着一声哨响斯蒂芬妮弗拉帕尔成为首位执法男足世界杯的女性主裁判2022卡塔尔世界杯E组小很多日本女性来到上海,都是来旅游的?经常有人说出国了不起啊,海龟找工作都容易得多。不可否认的是,有些国家的教育等条件是比我国好,但你想去别国瞧瞧,也有很多老外想来我国看看啊,每年来我国旅游的老外不在少数,还有很多人在日本这几个家居物品,个个都有真本事,建议备齐现在市场上的家居物品是越来越多了,好用的东西肯定能解决家居难题,尤其是我们逛超市的时候,你会发现大多数的好物都是进口产品,而日本家居好物的设计是最人性化的,若是在家中添置上,肯定能
汉语言推动下的民族融合,孝文帝改革,如何让汉风风靡鲜卑贵族?在阅读此文前,诚邀您点击一下关注,既方便您进行讨论与分享,又给您带来不一样的参与感,感谢您的支持。引言北魏统治者为了提高统治阶级的文化素质,采取措施让鲜卑贵族的子女接受汉语教育,从不误农时不负春!各地抢抓农时全力保障春耕春种人勤春来早,农忙正当时。福建闽侯田间地头春耕忙不误农时不负春眼下,在福建省福州市闽侯县南通镇的蔬菜种植区,菜农们正在收蔬菜翻土地,全力保障春耕春种。在闽侯县南通镇千亩蔬菜基地里,一揭秘伟人唯一曾孙,19岁高大帅气酷似祖辈,高考650分上人大2003年12月26日是毛主席110年周年诞辰,全国人民都在以不同的方式怀念着主席。与此同时,北京仁和医院一名男婴呱呱落地,更是牵动着全国人民的心,大家都由衷地为毛主席感到高兴。毛作家日签吴少东我把云霞从昨夜搬到了今晨本期诗人吴少东吴少东,安徽合肥人,中国作家协会会员。著有地理随笔最美的江湖诗集立夏书万物的动静等。首日的清晨诗吴少东起床后将一盆蝴蝶兰搬到了阳台我把云霞从昨夜搬到了今晨雪松与水杉的朱良漪创新成果奖谱育科技超级微波创新突破获行业肯定近日,由中国仪器仪表学会设置分析仪器分会组织开展的2022年度朱良漪分析仪器创新奖颁奖典礼在中国科学院过程工程研究所举办。聚光科技旗下自孵化子公司谱育科技创新研制的全自动超级微波消无人驾驶!航天科技!为高新造打call无人驾驶的一小步都是科技发展的一大步相信很多小新的铁粉们对无人驾驶都有一定了解大家首先想到的都是无人驾驶汽车列车等其实无人驾驶的应用领域不光局限于这些这不,科隆生产的无人驾驶车就要为什么华为mate50那么努力的堆料,买iPhone14的人看都不看一眼?截止2023年2月,iPhone14系列在某东的评价数超过320万,也就说iPhone14系列在某东的销量最少在320万台。算上其他电商平台和线下市场,iPhone14系列国内销量2023年,车企少了两个轮胎,多了一份野心图片来源视觉中国文偲睿洞察,作者Renee,编辑Emma2月9日,在台铃全球低碳出行研究院揭牌暨科技成果发布会上,台铃发布旗下首款搭载华为鸿蒙系统的台铃电动车超能二代赤兔鸿蒙版电动世界气象组织公布可持续监测温室气体计划为减少碳排放和增强气候适应能力提供路线图1月31日,世界气象组织(WMO)表示,各国政府和国际科学界正在认真考虑一项由联合国牵头的计划,旨在通过从根本上改善对全球各地吸热大气污染物科学家解析大豆三维基因组遗传多样性染色质的高级结构是基因组中顺式作用元件发挥功能的先决条件,其在基因表达调控中发挥着重要作用。在真核生物中,三维基因组的组织呈现出层次模式,染色质可以在多个层次上划分为不同的结构和功一款正经的浏览器导语可以学习一些资料,了解一下国际情况,看一些正经学习资料,看一些海外博主视频啥的,访问速度快无广绿化!官方介绍各种网页随意浏览,无限制,另外还可自行设置全局,可设置ad屏蔽,妈妈