C++使用socket实现与微信小程序通信

引言

Hello,小伙伴们,今天我跟大家推送一篇文章:关于如何通过C++使用ocket实现与微信小程序通信,不过这只是限制于局域网下的通信。

众所周知,我们一般使用微信小程序进行与其他平台进行通信时,网上的历程或者方法大都数是使用到了服务器,或者有些小伙伴们已经在选择到底是租阿里的云服务好呢还是腾讯的云服务好。这倒也是个不错的选择,前提是你需要的是接入互联网的那种。
如果你只是想实现微信小程序与单片机通信、电脑用户端进行通信,那么我建议你学会我这一招方法,学会自己动手能力、掌握扎实的基础知识。如果不是,那么那可以离开该网页另寻方法。

成果表现之一

在这里我给大家演示一下,如何在windows下本地C++实现websocket服务器与微信小程序进行通信。

1、首先打开websocket服务器,点击运行。

在这里插入图片描述
2、接着打开自己制作的微信小程序

在这里插入图片描述

3、点击开启,进行与websocket服务器连接,其中这里的第二表示子线程1。

在这里插入图片描述
4、点击查询按钮,获取本文文件记录。

在这里插入图片描述
5、本地文件数据保存至txt文件内:

在这里插入图片描述
6、微信小程序效果显示

在这里插入图片描述

功能的实现形式

1、使用C++实现微信小程序的websocket服务器

这一步是最为底层的、也是最容易实现的,首先我们知道微信小程序里面并不能进行socket通信,因为微信小程序不支持socket建立连接的,你所网上看到的都是websocket协议的。这里给大家简单介绍一下它们的区别是什么:

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口,连接建立与发送信息都是以TCP的

WebSocket是 HTML5 一种新的协议,是应用层的协议,一种双向通信协议 ,是建立在TCP之上的。

而websocket握手的过程如下:

(1)、建立TCP连接,三次握手。

	WSADATA wsaData;
    SOCKET sockServer;
    SOCKADDR_IN addrServer;
    SOCKET conn;
    SOCKADDR_IN addr;

    WSAStartup(MAKEWORD(2, 2), &wsaData);
    //创建Socket  
    sockServer = socket(AF_INET, SOCK_STREAM, 0);
    //准备通信地址  
    addrServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
    addrServer.sin_family = AF_INET;
    addrServer.sin_port = htons(8090);
    //绑定  
    bind(sockServer, (SOCKADDR*)&addrServer, sizeof(SOCKADDR));
    //监听  
    listen(sockServer, 5);

    int len = sizeof(SOCKADDR);
    //监听连接  
    conn = accept(sockServer, (SOCKADDR*)&addr, &len);

(2)、TCP连接成功后,客户端向服务端发送HTTP握手请求。

GET / HTTP/1.1
Host: localhost:8080
Origin: http://127.0.0.1:3000
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: w4v7O6xFTi36lq3RNcgctw==

(3)、服务器收到客户端的握手请求后,同样采用HTTP协议回馈数据。

HTTP/1.1 101 Switching Protocols
Connection:Upgrade
Sec-WebSocket-Accept: w4v7O6xFTi36lq3RNcgctw= 258EAFA5-E914-47DA-95CA-C5AB0DC85B11
Upgrade: websocket

(4)、当收到了连接成功的消息后,通过TCP通道进行传输通信。

据此,就完成了websocket的连接了。然后接下来就是怎么样处理接收和发送信息了。

2、C++使用线程池实现微信小程序多客户端接如服务器

这样部分呢,可以说是升级版的功能,毕竟只是单一的客户端实现与微信小程序太不方便了。

3、C++调用MySQL实现websocket后端数据保存

这个呢,可以说是最终版本,相信大家都知道微信小程序开发者工具里面也提供了后台数据的支撑,但是呢,由于我们采用的是在自己的电脑上进行搭建微信小程序的服务器,所以使用MySQL来实现后端数据了,这样既锻炼你的能力,又能学到很多,不去尝试一下吗。

2、微信小程序前端设计部分

首先,我们打开微信开发者工具,建立新工程文件。并在pages文件夹下来新增welcome文件夹。

在这里插入图片描述

接着,我们右键点击welcome文件,选择新建Page。输入welcome名称,就可以直接得到四个文件。

在这里插入图片描述
打开welcome.js页面,调用wx.connectSocket函数,注意IP地址和端口号的写入格式:url:'ws://(你的IP地址):(端口号),就可实现了。


login:function(){
    wx.connectSocket({
      url: 'ws://190.167.1.145:8090' ,  //此处开发者服务器接口地址
    })
    wx.onSocketOpen(function() {
      console.log("服务端连接成功")
    })
  }

详细解说

那个,这次的话我就不将再这里细说了,最近弄了个公众号,前期缺乏了粉丝关注,所以的希望拜托各位帮忙了,代码讲述我将会在公众号里面给出。如果想实现以上2、3功能的可以在微信公众后台回复我,我到时候再看需求量写出如何实现。
在这里插入图片描述

<think>嗯,用户想了解Excel中的VLOOKUP函数的用法和参数含义。首先,我需要回忆一下VLOOKUP的基本结构。VLOOKUP是垂直查找函数,用于在表格的首列查找指定的值,然后返回该行中指定列的数据。它的四个参数分别是查找值、表格范围、列索引号和匹配模式。 接下来,我得确认每个参数的具体作用。第一个参数是lookup_value,也就是用户要查找的值,比如产品ID或者姓名。第二个参数是table_array,即查找的范围,这里要注意的是,查找值必须位于这个范围的第一列,否则函数无法正确工作。第三个参数是col_index_num,也就是用户想要返回的数据在表格范围中的第几列,这个列数是从表格范围的第一列开始算起的,不是整个工作表的列。第四个参数是range_lookup,决定是精确匹配还是近似匹配,通常用FALSE或0来指定精确匹配,避免错误。 然后,用户可能需要一个具体的例子来理解如何使用。比如,假设有一个产品价格表,用户想根据产品ID查找对应的价格。这时候,VLOOKUP就可以在ID列查找,然后返回价格列的数据。同时,要提醒用户注意表格范围最好使用绝对引用,比如$A$2:$C$100,这样在拖动公式时范围不会变化。 可能遇到的问题也需要考虑。比如,如果查找值不在表格的第一列,或者列索引号超过了表格的列数,函数会返回错误。此外,数据格式不一致也可能导致问题,比如查找值是数字,而表格中是文本格式的数字,这时候需要统一格式。还有,当出现#N/A错误时,可能是查找值不存在,或者匹配模式设置不正确,需要检查参数是否正确。 用户可能还会问到如何避免常见的错误,比如部分数据匹配出错的情况。这时候需要检查是否有多余的空格,或者数据格式不一致,或者表格范围没有锁定导致拖动时偏移。此外,XLOOKUP作为VLOOKUP的升级版,可能在某些情况下更方便,比如可以向左查找或者返回多列数据,这也是可以提及的内容。 最后,整理步骤,从基础语法到参数说明,再到具体案例,逐步引导用户理解如何使用VLOOKUP函数。同时,提供常见错误和解决方法,帮助用户在实际应用中避免问题。如果有必要,还可以比较VLOOKUP和其他查找函数的区别,比如HLOOKUP或XLOOKUP,但根据用户的问题,主要集中在VLOOKUP本身即可。</think>### Excel VLOOKUP函数详解 #### 一、基础语法参数说明 VLOOKUP函数的语法为: $$=VLOOKUP(lookup\_value, table\_array, col\_index\_num, [range\_lookup])$$ 包含4个参数: 1. **lookup_value**(必填):要查找的值(如单元格引用或具体值) 2. **table_array**(必填):包含数据的表格范围(必须包含查找列和返回列) 3. **col_index_num**(必填):返回值所在列的序号(从table_array第一列开始计数) 4. **range_lookup**(可选):匹配类型 - `TRUE`/`1`:近似匹配(默认值,需数据升序排列) - `FALSE`/`0`:精确匹配(常用选项) [^1][^2] #### 二、使用步骤演示(工资表查询案例) 假设需要根据员工编号查询工资: 1. 建立查询单元格(如`B12`) 2. 输入公式: ```excel =VLOOKUP(A12, $A$2:$D$100, 4, 0) ``` - `A12`:待查询的员工编号 - `$A$2:$D$100`:锁定数据区域(绝对引用) - `4`:返回第4列(工资列) - `0`:精确匹配 [^2][^3] #### 三、常见错误解决方法 | 错误现象 | 原因 | 解决方案 | |---------|------|---------| | #N/A | 查找值不存在 | 检查数据源或改用`IFERROR`容错 | | #REF! | 列序号超出范围 | 确认col_index_num ≤ 表格列数 | | 部分匹配失败 | 数据格式不一致 | 统一数值/文本格式 | | 结果错位 | 表格未锁定 | 使用`$`符号固定区域引用 | [^3][^4] #### 四、进阶技巧 1. **多条件查询**: 使用辅助列合并多个条件字段 ```excel =VLOOKUP(A2&B2, $D$2:$F$100, 3, 0) ``` 2. **通配符匹配**: `"*"`匹配任意字符,`"?"`匹配单个字符 ```excel =VLOOKUP("张*", $A$2:$C$100, 3, 0) ``` 3. **跨表查询**: 引用其他工作表数据 ```excel =VLOOKUP(A2, Sheet2!$A$2:$D$100, 4, 0) ``` [^1][^4]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值