打印
[应用方案]

移植MQTT协议

[复制链接]
1065|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kiwis66|  楼主 | 2022-8-23 20:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
tarnsports函数中lwip_socket函数无定义

#if !defined(SOCKET_ERROR)
    /** error in socket operation */
   
#define SOCKET_ERROR -1

#endif

#define INVALID_SOCKET SOCKET_ERROR



#include "transport.h"

   
static int MQTTSocket = INVALID_SOCKET;

/*发包函数*/
int transport_sendPacketBuffer(int sock, unsigned char* buf, int buflen)
{
    int rc = 0;
    rc=lwip_write(sock,buf,buflen);
    return rc;
}

int transport_getdata(unsigned char* buf, int count)
{
    int rc = lwip_recv(MQTTSocket, buf, count, 0);
    return rc;
}
/*获取数据函数*/
int transport_getdatanb(void *sck, unsigned char* buf, int count)
{
    int sock = *((int *)sck);     /* sck: pointer to whatever the system may use to identify the transport */
    /* this call will return after the timeout set on initialization if no bytes;
       in your system you will use whatever you use to get whichever outstanding
       bytes your socket equivalent has ready to be extracted right now, if any,
       or return immediately */
    int rc = lwip_recv(sock, buf, count, 0);   
    if (rc == -1) {
        /* check error conditions from your system here, and return -1 */
        return 0;
    }
    return rc;
}
/*开启传输函数*/
int transport_open(char* addr, int port)
{
    struct hostent *server;
    struct sockaddr_in serv_addr;
    int timeout = 1000;
  
         MQTTSocket = lwip_socket(AF_INET, SOCK_STREAM, 0);
         if (MQTTSocket < 0)
         {
               
                return -1;
         }
         
      server = lwip_getsockname(addr);         
          if(server == NULL)
            {
                lwip_close(MQTTSocket);
                return -1;
            }
            memset(&serv_addr,0,sizeof(serv_addr));
            
            serv_addr.sin_family = 2;      
            serv_addr.sin_port = htons(port);   
            //serv_addr.sin_addr.s_addr = inet_addr(addr);
            memcpy(&serv_addr.sin_addr.s_addr,server->h_addr,server->h_length);
            memset(&(serv_addr.sin_zero), 0, sizeof(serv_addr.sin_zero));  
            if (lwip_connect(MQTTSocket,(struct sockaddr *)&serv_addr, sizeof(struct sockaddr)) == -1)
            {
                lwip_close(MQTTSocket);
        return -1;
            }  
            
      lwip_getsockopt(MQTTSocket, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout,sizeof(timeout));

    return MQTTSocket;
}
/*关闭传输函数*/
int transport_close(int sock)
{
  int rc;

    rc = lwip_shutdown(sock, SHUT_WR);
    rc = lwip_recv(sock, NULL, (size_t)0, 0);
    rc = lwip_close(sock);

    return rc;
}


使用特权

评论回复
沙发
huangcunxiake| | 2022-8-24 20:28 | 只看该作者
这个协议用的人不少。物联网上用的很多。

使用特权

评论回复
板凳
内政奇才| | 2022-8-31 09:36 | 只看该作者
现在都流行用黑色代码框了?

使用特权

评论回复
地板
Stahan| | 2022-9-9 20:28 | 只看该作者
物联网上用的多

使用特权

评论回复
5
belindagraham| | 2022-9-10 20:51 | 只看该作者
mqtt哪个版本可以移植到单片机  

使用特权

评论回复
6
modesty3jonah| | 2022-9-10 22:06 | 只看该作者
谁有将mqtt移植好的示例工程

使用特权

评论回复
7
janewood| | 2022-9-11 11:10 | 只看该作者
MQTT比TCP协议好在哪儿

使用特权

评论回复
8
uiint| | 2022-9-11 11:56 | 只看该作者
MQTT协议的传输模块有什么意义  

使用特权

评论回复
9
suzhanhua| | 2022-9-11 12:30 | 只看该作者
Mqtt 能传txt吗  

使用特权

评论回复
10
elsaflower| | 2022-9-11 13:30 | 只看该作者
MQTT broker 的连接

使用特权

评论回复
11
lzbf| | 2022-9-11 14:30 | 只看该作者
wifi 模块怎么连接mqtt  

使用特权

评论回复
12
febgxu| | 2022-9-11 16:09 | 只看该作者
如何采用MQTT协议实现android消息推送

使用特权

评论回复
13
yeates333| | 2022-9-11 17:05 | 只看该作者
如何应用MQTT协议到物联网中

使用特权

评论回复
14
Stahan| | 2022-9-13 21:40 | 只看该作者
谁有将mqtt移植好的示例工程

使用特权

评论回复
15
mikewalpole| | 2023-2-2 15:59 | 只看该作者
如何移植MQTT物联网通信协议

使用特权

评论回复
16
cemaj| | 2023-2-4 11:43 | 只看该作者
如何应用MQTT协议到物联网中

使用特权

评论回复
17
pentruman| | 2023-2-4 13:24 | 只看该作者
MQTT传输协议?               

使用特权

评论回复
18
fengm| | 2023-2-4 15:35 | 只看该作者
如何采用MQTT协议实现android消息推送  

使用特权

评论回复
19
ccook11| | 2023-2-4 16:13 | 只看该作者
使用MQTT协议,使用需要掌握ESP8266的使用。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

189

主题

1183

帖子

2

粉丝