首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux设备SDK无法解析IoT上的客户端终结点

Linux设备SDK无法解析IoT上的客户端终结点
EN

Stack Overflow用户
提问于 2017-09-26 13:01:17
回答 1查看 307关注 0票数 1

我已经在亚马逊网络服务控制台中浏览了IoT教程,用于设置一个Linux/Java设备,该设备下载一个压缩文件,并最终使用这里的代码:https://github.com/aws/aws-iot-device-sdk-java。当我从压缩包中运行start.sh脚本时,我看到一个UnknownHostException,并且脚本失败。

代码语言:javascript
复制
Cert file:../java-thing.cert.pem Private key: ../java-thing.private.key
Sep 21, 2017 10:23:11 PM com.amazonaws.services.iot.client.mqtt.AwsIotMqttConnectionListener onFailure
WARNING: Connect request failure
MqttException (0) - java.net.UnknownHostException: a2vnfud9kry2r9.iot.us-east-1.amazonaws.com
        at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:38)
        at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:664)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.UnknownHostException: a2vnfud9kry2r9.iot.us-east-1.amazonaws.com
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)
        at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668)
        at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:70)
        at org.eclipse.paho.client.mqttv3.internal.SSLNetworkModule.start(SSLNetworkModule.java:86)
        at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:650)
        ... 1 more

按照官方文档中的建议,诊断连接没有问题;它连接得很好:

代码语言:javascript
复制
openssl s_client -connect a2vnfud9kry2r9.iot.us-east-1.amazonaws.com:8443 -CAfile root-CA.crt -cert java-thing.cert.pem -key java-thing.private.key

同样奇怪的是,like客户端端点可以正常工作,但telnet等其他工具无法解析主机名。

我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2017-10-12 06:41:22

我想出了解决这个问题的办法:设置-Djava.net.preferIPv4Stack=true

亚马逊网络服务中的IoT端点同时支持IPv6和IPv4,而且,开箱即用,Java会更喜欢IPv6。从docs

Java网络堆栈首先检查底层操作系统是否支持IPv6。如果支持IPv6,它会尝试使用IPv6堆栈。更具体地说,在双堆栈系统上,它创建一个IPv6套接字。

似乎我的Ubuntu网络配置中的某些设置不正确,IPv6无法正常工作。如果有人能解释其中的原因,那就太棒了。

我的问题可能与this one有关。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46418133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档