今天在調試時發現一個localhost問題:
#define EMBER_AF_PLUGIN_TRANSPORT_MQTT_BROKER_ADDRESS "tcp://localhost:1883"
#define EMBER_AF_PLUGIN_TRANSPORT_MQTT_BROKER_ADDRESS_LENGTH (20)
當MQTT客戶端設置本地地址爲localhost:1883時,無法連接本地broker.
#define EMBER_AF_PLUGIN_TRANSPORT_MQTT_BROKER_ADDRESS "tcp://127.0.0.1:1883"
#define EMBER_AF_PLUGIN_TRANSPORT_MQTT_BROKER_ADDRESS_LENGTH (20)
修改localhost爲127.0.0.1後問題解決
這裏分析原因:
root@sun8i:/etc# ls
adb_profile etc_complete modules-boot.d rc.d
banner fstab modules.d res
banner.failsafe group mtab resolv.conf
camera.cfg hotplug.d openwrt_release shadow
cedarx.conf init.d openwrt_version shells
config inittab opkg ts.conf
crontabs localtime opkg.conf tslib-env.sh
device_info lost+found passwd uci-defaults
dnsmasq.conf mdev.conf profile wifi
e2fsck.conf mediafile.txt rc.common xr_wifi.conf
root@sun8i:/etc# cd ..
root@sun8i:/# find . -name hosts
root@sun8i:/#
可以看到,嵌入式板子上/etc目錄下沒有host文件,所以無法解析localhost字符串,這纔是問題的原因,大家在遇到類似問題時請多注意域名的解析問題。