curl库用官方编译的直接覆盖没问题, 因为需要websocket支持ssl, 我自己用这个版本编译的: libwebsockets-1.3-chrome37-firefox30.zip
加上了-DLWS_IPV6=1这个参数, 但是模拟ipv6-only网络后,链接websocket服务器的时候出现了错误编号65, 查了下是no route to host. 但是我用手机上的safari直接访问url是可以的. 另外我传的是域名不是ip.
websocketlog, level:4, lwslog:IPV6 compiled in and enabled
websocketlog, level:4, lwslog:libev support not compiled in
websocketlog, level:16, lwslog:Connect failed errno=65
websocketlog, level:16, lwslog:close: just_kill_connection
websocketlog, level:8, lwslog:remove_wsi_socket_from_fds: wsi=0x1d74d10, sock=23, fds pos=1
websocketlog, level:16, lwslog:not calling back closed
websocketlog, level:16, lwslog:closing: shutdown ret 57
查了下代码应该是在这里出的问题:
#ifdef LWS_USE_IPV6
if (LWS_IPV6_ENABLED(context)) {
v = (struct sockaddr *)&server_addr6;
n = sizeof(struct sockaddr_in6);
} else
#endif
{
v = (struct sockaddr *)&server_addr4;
n = sizeof(struct sockaddr);
}
if (connect(wsi->sock, v, n) == -1 || LWS_ERRNO == LWS_EISCONN) {
从前面的日志可以看出来LWS_USE_IPV6这个应该是true的,不知道为什么会no route to host…