Stream Continually 只读取 1 分钟
Stream Continually only reads for 1 minute
Stream.continually
returns 空字符串如果 in.readLine
花费的时间比 1 minute
val f = SSLSocketFactory.getDefault.asInstanceOf[SSLSocketFactory]
val s = f.createSocket(ip, port).asInstanceOf[SSLSocket]
s.startHandshake()
s.setTcpNoDelay(true)
val out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream))
val in = new BufferedReader(new InputStreamReader(s.getInputStream))
val in = new BufferedReader(new InputStreamReader(s.getInputStream))
Stream.continually(in.readLine()).takeWhile(_ != null).mkString
为什么会这样?
我可以用一些 属性 来改变这个吗?
我已经浏览了整个 Stream 文档,但我想我可能遗漏了一些东西。
我也试过添加 s.setSoTimeout(300000)
我还阅读了 SSLSocketFactory
的官方文档,但找不到任何默认超时。也没有找到 SSLSocket
结论(调试此错误后)
这与 Stream 无关。它也与 SSLSocketFactory
或 SSLSocket
没有任何关系。这是代理中的超时问题。我完全弄错了。
这实际上与Stream
无关。尝试从您的代码中取出 Stream
:
val ip = "74.125.141.147" // google
val port = 443
val f = SSLSocketFactory.getDefault.asInstanceOf[SSLSocketFactory]
val s = f.createSocket(ip, port).asInstanceOf[SSLSocket]
s.startHandshake()
s.setTcpNoDelay(true)
val out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream))
val in = new BufferedReader(new InputStreamReader(s.getInputStream))
println {
in.readLine()
}
这最终会打印出 null
,这是应该的(我认为当遥控器感到无聊并挂断时)。
发生的事情是 mkString
,给定一个空序列,将生成一个空字符串。
Stream.continually
returns 空字符串如果 in.readLine
花费的时间比 1 minute
val f = SSLSocketFactory.getDefault.asInstanceOf[SSLSocketFactory]
val s = f.createSocket(ip, port).asInstanceOf[SSLSocket]
s.startHandshake()
s.setTcpNoDelay(true)
val out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream))
val in = new BufferedReader(new InputStreamReader(s.getInputStream))
val in = new BufferedReader(new InputStreamReader(s.getInputStream))
Stream.continually(in.readLine()).takeWhile(_ != null).mkString
为什么会这样?
我可以用一些 属性 来改变这个吗?
我已经浏览了整个 Stream 文档,但我想我可能遗漏了一些东西。
我也试过添加 s.setSoTimeout(300000)
我还阅读了 SSLSocketFactory
的官方文档,但找不到任何默认超时。也没有找到 SSLSocket
结论(调试此错误后)
这与 Stream 无关。它也与 SSLSocketFactory
或 SSLSocket
没有任何关系。这是代理中的超时问题。我完全弄错了。
这实际上与Stream
无关。尝试从您的代码中取出 Stream
:
val ip = "74.125.141.147" // google
val port = 443
val f = SSLSocketFactory.getDefault.asInstanceOf[SSLSocketFactory]
val s = f.createSocket(ip, port).asInstanceOf[SSLSocket]
s.startHandshake()
s.setTcpNoDelay(true)
val out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream))
val in = new BufferedReader(new InputStreamReader(s.getInputStream))
println {
in.readLine()
}
这最终会打印出 null
,这是应该的(我认为当遥控器感到无聊并挂断时)。
发生的事情是 mkString
,给定一个空序列,将生成一个空字符串。