• 鸿蒙笔记--Socket


           这一节主要了解鸿蒙Socket通信,在鸿蒙系统中,Socket TCP通讯是一种常用的网络通信方式,它提供了可靠的、面向连接的数据传输服务。它主要用到@ohos.net.socket这个库;

    1. constructTCPSocketInstance:创建一个 TCPSocket;
    2. connect:连接目标服务器;
    3. bind:绑定端口;
    4. send:发送数据;
    5. close:关闭连接;
    6. on:打开对应事件的监听;
    7. off:关闭对应事件的监听;

    栗子:

    1. export default class SocketUtils {
    2. public static connect(host: string, mPort: number,data:string) {
    3. let socketTcp = socket.constructTCPSocketInstance();
    4. let localAddress = {
    5. address: host,
    6. family: 1,
    7. port: mPort
    8. }
    9. let tcpOptions = {
    10. address:localAddress,
    11. timeout:15000
    12. }
    13. console.log("connect >>>> tcpOptions:"+JSON.stringify(tcpOptions));
    14. let promise = socketTcp.connect(tcpOptions)
    15. promise.then(() => {
    16. console.log(" connect >>>> ok ");
    17. sendSocketData(socketTcp,data)
    18. }).catch(err => {
    19. console.log(" connect >>>> err:"+JSON.stringify(err));
    20. })
    21. }
    22. }
    23. function sendSocketData(socketTcp: socket.TCPSocket, data: string) {
    24. let options ={
    25. data:JSON.stringify(data)
    26. }
    27. socketTcp.send(options,(err,data) => {
    28. if(err) {
    29. console.log(" sendSocketData >>>> err:"+JSON.stringify(err));
    30. } else {
    31. console.log(" sendSocketData >>>> success data :"+JSON.stringify(data));
    32. }
    33. })
    34. socketTcp.on("message",(message)=> {
    35. const content = StringUtils.arrayBuffer2String(message.message)
    36. console.log(" sendSocketData >>>> message content:"+content);
    37. })
    38. }
    39. import util from '@ohos.util';
    40. class StringUtils {
    41. string2Uint8Array1(value: string): Uint8Array {
    42. if (!value) return null;
    43. //
    44. let textEncoder = new util.TextEncoder();
    45. //获取点流并发出 UTF-8 字节流 TextEncoder 的所有实例仅支持 UTF-8 编码
    46. return textEncoder.encodeInto(value)
    47. }
    48. uint8Array2String(input: Uint8Array) {
    49. let textDecoder = util.TextDecoder.create("utf-8", { ignoreBOM: true })
    50. return textDecoder.decodeWithStream(input, { stream: false });
    51. }
    52. arrayBuffer2String(input: ArrayBuffer) {
    53. return this.uint8Array2String(new Uint8Array(input))
    54. }
    55. }
    56. export default new StringUtils()

    注:发起 http 网络请求需要申请 ohos.permission.INTERNET 权限

    本地测试如下:

     

  • 相关阅读:
    Vue3踩坑指南
    如何设置网络访问 SQL Express?
    Docker安装并启动Nacos
    什么是回调函数?
    金仓数据库兼容Oracle exp/imp的导出导入工具手册(4. 功能与实践 )
    MySql进阶 锁 优化 | DAY 15
    偏偏不信文心大模型4.0比肩GPT-4!我为它们安排了一场龙虎斗!
    CentOS卸载LVM磁盘的方法
    QT 自定义信号
    一本通1075;药房管理
  • 原文地址:https://blog.csdn.net/ljt2724960661/article/details/140910802