[应用方案] 移植MQTT协议

[复制链接]
1416|18
 楼主| kiwis66 发表于 2022-8-23 20:29 | 显示全部楼层 |阅读模式
tarnsports函数中lwip_socket函数无定义

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

  5. #endif

  6. #define INVALID_SOCKET SOCKET_ERROR



  7. #include "transport.h"

  8.    
  9. static int MQTTSocket = INVALID_SOCKET;

  10. /*发包函数*/
  11. int transport_sendPacketBuffer(int sock, unsigned char* buf, int buflen)
  12. {
  13.     int rc = 0;
  14.     rc=lwip_write(sock,buf,buflen);
  15.     return rc;
  16. }

  17. int transport_getdata(unsigned char* buf, int count)
  18. {
  19.     int rc = lwip_recv(MQTTSocket, buf, count, 0);
  20.     return rc;
  21. }
  22. /*获取数据函数*/
  23. int transport_getdatanb(void *sck, unsigned char* buf, int count)
  24. {
  25.     int sock = *((int *)sck);     /* sck: pointer to whatever the system may use to identify the transport */
  26.     /* this call will return after the timeout set on initialization if no bytes;
  27.        in your system you will use whatever you use to get whichever outstanding
  28.        bytes your socket equivalent has ready to be extracted right now, if any,
  29.        or return immediately */
  30.     int rc = lwip_recv(sock, buf, count, 0);   
  31.     if (rc == -1) {
  32.         /* check error conditions from your system here, and return -1 */
  33.         return 0;
  34.     }
  35.     return rc;
  36. }
  37. /*开启传输函数*/
  38. int transport_open(char* addr, int port)
  39. {
  40.     struct hostent *server;
  41.     struct sockaddr_in serv_addr;
  42.     int timeout = 1000;
  43.   
  44.          MQTTSocket = lwip_socket(AF_INET, SOCK_STREAM, 0);
  45.          if (MQTTSocket < 0)
  46.          {
  47.                
  48.                 return -1;
  49.          }
  50.          
  51.       server = lwip_getsockname(addr);         
  52.           if(server == NULL)
  53.             {
  54.                 lwip_close(MQTTSocket);
  55.                 return -1;
  56.             }
  57.             memset(&serv_addr,0,sizeof(serv_addr));
  58.             
  59.             serv_addr.sin_family = 2;      
  60.             serv_addr.sin_port = htons(port);   
  61.             //serv_addr.sin_addr.s_addr = inet_addr(addr);
  62.             memcpy(&serv_addr.sin_addr.s_addr,server->h_addr,server->h_length);
  63.             memset(&(serv_addr.sin_zero), 0, sizeof(serv_addr.sin_zero));  
  64.             if (lwip_connect(MQTTSocket,(struct sockaddr *)&serv_addr, sizeof(struct sockaddr)) == -1)
  65.             {
  66.                 lwip_close(MQTTSocket);
  67.         return -1;
  68.             }  
  69.             
  70.       lwip_getsockopt(MQTTSocket, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout,sizeof(timeout));

  71.     return MQTTSocket;
  72. }
  73. /*关闭传输函数*/
  74. int transport_close(int sock)
  75. {
  76.   int rc;

  77.     rc = lwip_shutdown(sock, SHUT_WR);
  78.     rc = lwip_recv(sock, NULL, (size_t)0, 0);
  79.     rc = lwip_close(sock);

  80.     return rc;
  81. }


huangcunxiake 发表于 2022-8-24 20:28 | 显示全部楼层
这个协议用的人不少。物联网上用的很多。
内政奇才 发表于 2022-8-31 09:36 | 显示全部楼层
现在都流行用黑色代码框了?
Stahan 发表于 2022-9-9 20:28 | 显示全部楼层
物联网上用的多
belindagraham 发表于 2022-9-10 20:51 | 显示全部楼层
mqtt哪个版本可以移植到单片机  
modesty3jonah 发表于 2022-9-10 22:06 | 显示全部楼层
谁有将mqtt移植好的示例工程
janewood 发表于 2022-9-11 11:10 | 显示全部楼层
MQTT比TCP协议好在哪儿
uiint 发表于 2022-9-11 11:56 | 显示全部楼层
MQTT协议的传输模块有什么意义  
suzhanhua 发表于 2022-9-11 12:30 | 显示全部楼层
Mqtt 能传txt吗  
elsaflower 发表于 2022-9-11 13:30 | 显示全部楼层
MQTT broker 的连接
lzbf 发表于 2022-9-11 14:30 | 显示全部楼层
wifi 模块怎么连接mqtt  
febgxu 发表于 2022-9-11 16:09 | 显示全部楼层
如何采用MQTT协议实现android消息推送
yeates333 发表于 2022-9-11 17:05 | 显示全部楼层
如何应用MQTT协议到物联网中
Stahan 发表于 2022-9-13 21:40 | 显示全部楼层
谁有将mqtt移植好的示例工程
mikewalpole 发表于 2023-2-2 15:59 | 显示全部楼层
如何移植MQTT物联网通信协议
cemaj 发表于 2023-2-4 11:43 | 显示全部楼层
如何应用MQTT协议到物联网中
pentruman 发表于 2023-2-4 13:24 | 显示全部楼层
MQTT传输协议?               
fengm 发表于 2023-2-4 15:35 | 显示全部楼层
如何采用MQTT协议实现android消息推送  
ccook11 发表于 2023-2-4 16:13 | 显示全部楼层
使用MQTT协议,使用需要掌握ESP8266的使用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

189

主题

1183

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部