【发布时间】:2015-06-22 11:45:08
【问题描述】:
我正在尝试向 mosquitto MQTT 代理发送连接数据包。我可以与代理建立连接,但代理没有完全接收连接数据,即,wireshark 没有在代理中显示 MQIspd 数据,而是接收客户端 ID。
MQTT 协议版本为 v3.0。
通过 SIM900 GSM/GPRS 调制解调器发送数据包。
代码有什么问题?
下面是连接包C代码:
#define MQTTCONNECT 1<<4
#define MQTTPUBLISH 3<<4
#define KEEPALIVE 15000
int main()
{
uint8_t buf[255];
char *id="MQTT"
uint8_t var_header[] = {0x00,0x06,0x4d,0x51,0x49,0x73,0x64,0x70,0x03,0x02,0x00,KEEPALIVE/500,0x00,strlen(id);
uint8_t fixed_header[] = {MQTTCONNECT,12+strlen(id)+2};
char packet[sizeof(fixed_header)+sizeof(var_header)+strlen(id)];
memset(packet,0,sizeof(packet));
memcpy(packet,fixed_header,sizeof(fixed_header));
//memcpy(packet+sizeof(fixed_header),var_header,sizeof(var_header));
//memcpy(packet+sizeof(fixed_header)+sizeof(var_header),id,strlen(id));
//sprintf(buf,"%s\x1A",memcpy(packet+sizeof(fixed_header)+sizeof(var_header),id,strlen(id));
sprintf(buf,"%s\x1A",memcpy(packet+sizeof(fixed_header)+sizeof(var_header),id,strlen(id)));
port_write(buf); //write data into the serial port.
return 0;
}
谢谢。
【问题讨论】: