SocketChannel连接需要很长时间

时间:2012-06-06 17:47:43

标签: android

SocketChannel sockChannel = SocketChannel.open();
sockChannel.configureBlocking(false);
sockChannel.connect(new InetSocketAddress(remoteAddr, remotePort));

在Android上连接需要30ms到50ms,有时超过100ms 版本2.3.4和3.2.1。 我已经在两个硬件上执行了几次测试,而且总是如此 慢。我希望它不到2-3毫秒,因为它是非 阻塞。

这是一个已知问题吗? 我正在使用Selector来选择超过10个SocketChannels SelectionKey.OP_CONNECT。 Selector.select使用100ms的超时时间 这种情况,但总的时间超过1秒,这主要是 因为SocketChannel.connect。有没有替代品 避免SocketChannel.connect的问题,仍然可以完成 选择器在100毫秒。

由于 亚历克斯

1 个答案:

答案 0 :(得分:0)

如果remoteAddrString,则会进行(阻止)尝试以将该名称解析为InetAddress。请参阅here

30到100毫秒听起来像DNS查询的合理往返时间。

这意味着,延迟发生在connect()被调用之前。