一、环境
win7 python2.7.13
二、报错
Traceback (most recent call last):
File "E:/project/test/mqtt/mqtt_test.py", line 35, in <module>
client.connect(endpoint, port, 60) #连接服务 keepalive=60
File "D:\python2713\install\lib\site-packages\paho\mqtt\client.py", line 768, in connect
return self.reconnect()
File "D:\python2713\install\lib\site-packages\paho\mqtt\client.py", line 940, in reconnect
return self._send_connect(self._keepalive, self._clean_session)
File "D:\python2713\install\lib\site-packages\paho\mqtt\client.py", line 2127, in _send_connect
"!H" + str(len(protocol)) + "s"+ "BBH", len(protocol), protocol, proto_ver, connect_flags, keepalive)
struct.error: cannot convert argument to integer
三、解决
源代码:
"!H" + str(len(protocol)) + "s"+ "BBH", len(protocol), protocol, proto_ver, connect_flags, keepalive)
改为:
"!H" + str(len(protocol)) + "s"+ "BBH", len(protocol), protocol, 4, connect_flags, keepalive) # change by ruoyun at 171030
原因:
通过打印变量发现
proto_ver 并没有不是以为变量形式传入,导致本来应该传入4,结果传入一个字符串'MQTTv311'