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毫秒。
由于 亚历克斯
答案 0 :(得分:0)
如果remoteAddr
是String
,则会进行(阻止)尝试以将该名称解析为InetAddress
。请参阅here。
30到100毫秒听起来像DNS查询的合理往返时间。
这意味着,延迟发生在connect()
被调用之前。