最后更新:2022-07-30 12:35:19 手机定位技术交流文章
本文主要讨论如何使用开发板的Wi-Fi功能,为外部通信打开Wi-Fi。本文主要讨论了TCP、UDP和MQTT三种通信协议的使用。
本文件中主要使用的函数third_party/lwip/src/include/lwip/sockets.h
socket()
sock_fd = socket(AF_INET, SOCK_STREAM, 0) //AF_INT:ipv4, SOCK_STREAM:tcp协议
描述:
在网络编程中所需要进行的第一件事情就是创建一个socket,客户或服务器,你需要创建一个插座,函数返回插座文件描述符,类似于文件描述符。插座是一个结构,被创建在内核中。
bind()
bind(sockfd,(struct sockaddr*)&serveraddr,sizeof(serveraddr))
描述:
绑定本地协议地址和插座,例如, 机器的22端口与插座相连.注意:为什么使用Socket的UDP客户端教程中客户端不需要调用绑定函数?这是因为如果调用绑定函数不绑定一个端口,当调用连接函数时,内核将暂时选择一个接口端口,因此可以不用绑定。服务器需要被绑定的原因是,所以客户端需要知道服务器正在使用哪个端口,所以需要提前绑定。
listen()
int listen(int s, int backlog)
描述:
此函数返回已经握手完成的连接的套接口。注意:此处的套接口不同于服务器开始创建的监听套接口,此套接口是已经完成连接的套接口,监听套接口只是用来监听。
UDP协议的概念没有太多讨论,属于基于数据的通信,没有连接不可靠,但快速。
sendto()
int sendto ( socket s , const void * msg, int len, unsigned int flags,const struct sockaddr * to , int tolen ) ;
描述:
sendto() 用来将数据由指定的socket传给对方主机。参数s为已建好连线的socket。参数msg指向欲连线的数据内容,参数flags 一般设0。
recvfrom()
int recvfrom(int s, void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen);
描述:
从指定地址接收UDP数据消息。

完成wifi热点连接需要以下步骤
服务器端需要绑定一个接口来监控客户端的连接请求。
协议的概念没有太多讨论, 属于流动通信 、 可靠的连接.
recv()
int recv( SOCKET s, char *buf, int len, int flags)
描述:
recv函数从TCP连接的另一端接收数据
send()
int send( SOCKET s,char *buf,int len,int flags )
描述:
发送函数用于发送数据到TCP连接的另一端。

服务器端需要绑定一个接口来监控客户端的连接请求。
完成wifi热点连接需要以下步骤
socket接口创建一个socket,AF_INT表示ipv4,SOCK_STREAM表示使用tcp协议bind接口绑定插座和地址。listen接口监视(指定端口监视),通知操作系统区域接受客户端链接的请求,第二个参数:指定队列长度accept接口从队列中获取客户端请求链接recv接口接收由客户端发送的数据send接口将固定数据返回客户端
协议概念就不多讲了,之前有总结过。
LiteOS SDK oc流程之MQTT

Paho是IBM在2011年建立的Eclipse开源项目,该项目包含多种语言编写的可用客户端。
嵌入式C语言客户端地址: https://github.eclipse/paho.mqtt.embedded-c
gitee页面为:bearpi-hm_nano/ third_party / paho_mqtt,你可以在此网页了解更多有关该图书馆的资料。
Hung Mon系统相关移植文件:MQTTClient-CsrcliteOSMQTTLiteOS.c
MQTTClient一个高级别C++客户端程序,包含MQTTPacket。MQTTClient-C:用MQTTPacket包装生成的高级C客户端程序MQTTPacket提供MQTT包的序列和逆序列,以及一些辅助功能。在MQTTClient中,相应的接口函数在h文件中声明。 我们只需要调用接口,我们不再需要自己实现MQTT协议。
| 接口名 | 功能描述 |
|---|---|
| MQTTClientInit | 创建一个客户端对象 |
| MQTTConnect | 发送MQTT连接数据包 |
| MQTTConnectWithResults | 发送MQTT连接包,等待返回 |
| MQTTPublish | 发送MQTT发布数据包 |
| MQTTSetMessageHandler | 发送每个主题消息处理函数 |
| MQTTSubscribe | 发送MQTT订阅包 |
| MQTTSubscribeWithResults | 发送MQTT订阅包并等待返回结果 |
| MQTTUnsubscribe | 发送MQTT取消数据包 |
| MQTTDisconnect | 发送MQTT去切断连接包和关闭连接 |
代码是从样品中的iot_mqtt项目中提取出来。
MQTTClientInit建立MQTT客户端MQTTConnect开启MQTT连接。发布
测试开发委员会客户端首先需要一个服务端,一个经纪人,然后需要一个PC客户端来订阅开发委员会发行的主题消息。
官方提供两个软件,你可以自己试一下:
MQTT消息代理软件Mosquitto下载地址: https://mosquitto.org/download/
Eclipse桌面客户端程序下载地址:
https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.ui.app/1.1.1/
有关调试的转录,请参阅官方案例页
官方的逐步调试屏幕图页
本文由 在线网速测试 整理编辑,转载请注明出处。