树莓派问题现象:
- 使用curl库,http访问公网域名,连接超时;
- 使用websocketpp库,ws访问公网域名,连接超时
- 使用命令行ping域名,也要15s以上
Android上问题现象:
- 使用curl库,http访问公网域名,正常;
- 使用websocketpp库,ws访问公网域名,连接超时
- 使用命令行ping域名,正常
相关异常打印:
con->get_ec().message()返回 Timer Expired
get_local_close_code 返回 1006
ws端分析过程:
libwebsocketpp库连接流程分析:
3rd/libwebsocketpp/0.8.2/include/websocketpp/roles/client_endpoint.hpp
transport_type::async_connect
3rd/libwebsocketpp/0.8.2/include/websocketpp/transport/asio/endpoint.hpp
void async_connect(transport_con_ptr tcon, uri_ptr u, connect_handler cb)
m_resolver->async_resolve
3rd/libasio/1.18.1/include/asio/detail/resolver_service.hpp
void async_resolve
start_resolve_op(p

本文探讨了在树莓派及Android平台上使用curl和websocketpp库进行公网域名访问时遇到的连接超时问题。通过深入分析发现,问题根源在于DNS解析时尝试获取IPv6地址导致的超时,并提供了解决方案。
最低0.47元/天 解锁文章
3万+

被折叠的 条评论
为什么被折叠?



