微信小程序使用TCP通信

这篇具有很好参考价值的文章主要介绍了微信小程序使用TCP通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最终目的:在微信小程序内实现对局域网发起TCP通信

实现步骤:建立TCP服务 + 小程序发起通信

建立TCP服务

第一步:引入net模块(http模块是基于net模块之上的)

const net = require('net');

第二步:新建TCP服务,同时进行各种生命周期事件的监听

const server = net.createServer((socket) => {
  console.log('接收到了tcp请求');

  // 发送数据到客户端
  socket.write('服务器tcp连接成功,接下来每三秒会推送消息给你', 'utf8');

  // 每隔三秒发送一次数据进行测试
  let timer = null
  let i = 1
  timer = setInterval(() => {
    socket.write(`tcp推送的第${i++}条消息`);
  }, 3000)


  // 关闭链接时清除定时器
  server.on('close', () => {
    timer && clearInterval(timer)
    i = 0
    console.log('关闭tcp链接');
  });

 // 监听客户端服务发送
  server.on('data', (data) => {
    console.log('接收到了数据,数据为 ' + data);
  });

  server.on('error', (err) => {
    console.error('失败: ' + err);
  });

});

第三步:开启TCP服务

server.listen(1400, '192.168.7.102', () => {
  console.log('开始监听');
  // 在这里可以发送和接收数据
});

小程序发起通信

<template>
  <view>
    <button @click="getWifiInfo">获取正在连接的wifi信息</button>
    局域网ip
    <input type="text" v-model="ip" />
    局域网端口
    <input type="text" v-model="port" />

    <button @click="connect">建立tcp链接</button>

    <!-- 打印信息 -->
    <view v-for="(item, index) in infoList" :key="index">
      {{ item }}
    </view>
  </view>
</template>

<script>
  // ArrayBuffer转string
  const transitionArrayBufferToString = arrayBuffer => {
    // 将 ArrayBuffer 转换为 Uint8Array
    const uint8Array = new Uint8Array(arrayBuffer)

    // 创建一个存放字符的数组
    const characters = []

    // 遍历 Uint8Array 并将每个字节转换为字符
    for (let i = 0; i < uint8Array.length; i++) {
      characters.push(String.fromCharCode(uint8Array[i]))
    }

    // 使用数组的 join 方法将字符连接成字符串,并指定字符编码为 UTF-8
    const text = decodeURIComponent(escape(characters.join('')))

    return text
  }

  export default {
    data() {
      return {
        data: '拉',
        tcp: '',
        infoList: [],
        ip: '192.168.7.102',
        port: '1400',
        message: '',
      }
    },
    onLoad() {
      this.wifiInit()
    },
    methods: {
      // 初始化wifi模块
      wifiInit() {
        wx.startWifi({
          fail(error) {
            console.log('初始化wifi-失败', error)
          },
          success(res) {
            console.log('初始化wifi-成功', res)
          },
        })
      },
      // 获取wifi信息
      getWifiInfo() {
        wx.getConnectedWifi({
          partialInfo: true,
          fail(error) {
            console.log('获取失败', error)
          },
          success(res) {
            console.log('wifi信息', res)
          },
        })
      },
      // tcp链接
      connect() {
        // 初始化TCP实例
        this.tcp = wx.createTCPSocket()
        // tcp实例向服务端发起连接
        this.tcp.connect({ address: this.ip, port: ~~this.port })
        this.infoList.push(`向${this.ip}:${~~this.port}建立链接`)

        this.tcp.onClose(() => {
          this.infoList.push('关闭')
          this.tcp.close()
        })
        this.tcp.offClose(() => {
          this.infoList.push('offClose')
        })
        this.tcp.onConnect(() => {
          this.infoList.push('连接成功')
        })
        this.tcp.offConnect(() => {
          this.infoList.push('offConnect')
        })
        this.tcp.onError(error => {
          this.infoList.push('异常:' + error)
        })
        this.tcp.onMessage(data => {
          // data是一个对象,服务端发送的数据在message属性里,且message微信这边得到的是一个ArrayBuffer格式的数据,所以需要转换一下
          this.infoList.push('接收到数据: ' + transitionArrayBufferToString(data.message))
        })
      },
    },
  }
</script>

注意:文章来源地址https://www.toymoban.com/news/detail-773341.html

  1. 微信小程序的TCP只能访问局域网以及通过备案且在小程序后台配置好的公网
  2. 小程序示例代码中的wifi部分是为了查看用户连接的wifi是否有问题,可按需删除

到了这里,关于微信小程序使用TCP通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java中网络的基本介绍。网络通信,网络,ip地址,域名,端口,网络通信协议,TCP/IP传输过程,网络通信协议模型,TCP协议,UDP协议

    - 网络通信 概念:网络通信是指 通过计算机网络进行信息传输的过程 ,包括数据传输、语音通话、视频会议等。在网络通信中,数据被分成一系列的数据包,并通过网络传输到目的地。在数据传输过程中,需要确保数据的完整性、准确性和安全性。常见的网络通信协议有T

    2024年02月10日
    浏览(68)
  • Unity通过TCP/IP协议进行通信

    uinty项目中需要与C++编写的硬件进行通信,因此采用TCP/IP协议进行通信,主要实现了与服务器的连接、通信内容的发送以及断开连接等功能。 根据确定好的协议格式,编写需要发送的内容,将其转为字节流(byte[])通过通信接口进行发送即可。具体代码如下:

    2024年02月11日
    浏览(39)
  • 网络编程——深入理解TCP/IP协议——OSI模型和TCP/IP模型:构建网络通信的基石

    TCP/IP协议,即 传输控制协议/互联网协议 ,是一组用于在计算机网络中实现通信的协议。它由两个主要的协议组成:TCP(传输控制协议)和IP(互联网协议)。TCP负责确保数据的可靠传输,而IP则负责路由数据包以在网络中传递。TCP/IP协议簇还包含其他辅助协议,如UDP(用户数

    2024年02月14日
    浏览(53)
  • 网络通信深入解析:探索TCP/IP模型

            你知道在我们的网页浏览器的地址当中输入url,未必是如何呈现的吗?         web浏览器根据地址栏中指定的url,从web服务器获取文件资源(resource)等信息,从而显示出web页面。web使用HTTP(超文本传输协议)的协议作为规范,完成从客户端从服务器端等一系列的运

    2024年02月07日
    浏览(58)
  • 深入理解TCP/IP协议:网络通信的基石

    提示:本系列文章重点学习TCP/IP协议 提示:在这里先对TCP/IP协议做一个概述,以便大家能更好的理解: TCP/IP协议是当今互联网世界中最为重要的网络通信协议之一,它承载了全球范围内数以亿计的设备之间的通信。无论是在个人日常使用的智能手机,还是在企业级的网络架

    2024年04月16日
    浏览(48)
  • 深入理解网络通信和TCP、IP协议-01

    计算机网络是什么? 随着计算机技术发展,计算机的体积和价格都在下降,之前计算机多用于研究机构,现 阶段逐步进入一般的公司用于办公。原来计算机之间传输数据需要通过软盘等第三方存储介 质进行转存,人们需要将数据直接通过通信线路传输,来缩短传输时间,于

    2024年02月16日
    浏览(52)
  • 《TCP/IP网络编程》阅读笔记--进程间通信

    目录 1--进程间通信 2--pipe()函数 3--代码实例 3-1--pipe1.c 3-2--pipe2.c 3-3--pipe3.c 3-4--保存信息的回声服务器端         为了实现进程间通信,使得两个不同的进程间可以交换数据,操作系统必须提供两个进程可以同时访问的内存空间;         为了完成进程间通信,需要创建管道

    2024年02月09日
    浏览(47)
  • 计算机通信地址【图解TCP/IP(笔记六)】

    通信传输中,发送端和接收端可以被视为通信主体。它们都能由一个所谓“地址”的信息加以标识出来。当人们使用电话时,电话号码就相当于“地址”。当人们选择写信时,通信地址加上姓名就相当于“地址”。 现实生活当中的“地址”比较容易理解,然而在计算机通信当

    2024年02月13日
    浏览(39)
  • 【网络编程】网络通信基础——简述TCP/IP协议

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程的一点学习心得,欢迎大家在评论区交流讨论💌 ip地址简单来说就是用来描述网络上一个设备的所在位置。 端

    2024年02月04日
    浏览(56)
  • Qt开发-TCP/IP网络通信(以及文件传输)

    TCP/IP通信(即SOCKET通信)是通过网线将 服务器Server端 和 客户机Client端 进行连接,在遵循ISO/OSI模型的四层层级构架的基础上通过TCP/IP协议建立的通讯。控制器可以设置为服务器端或客户端。 关于TCP/IP协议可详看:TCP/IP协议详解 - 知乎 (zhihu.com) 总的来说,TCP/IP通讯有两个部分

    2024年02月10日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包