Scala 流仅持续读取1分钟
Scala 流仅持续读取1分钟,scala,stream,bufferedreader,Scala,Stream,Bufferedreader,Stream.continuously如果.readLine中的花费的时间超过1分钟,则返回空字符串 val f = SSLSocketFactory.getDefault.asInstanceOf[SSLSocketFactory] val s = f.createSocket(ip, port).asInstanceOf[SSLSocket] s.startHandshake() s.setTcpNoDelay(true) val out = new BufferedWriter(ne
Stream.continuously
如果.readLine中的花费的时间超过1分钟,则返回空字符串
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
为什么会发生这种情况
我可以用一些属性来改变这个吗
我已经浏览了整个流文档,但我想我可能遗漏了一些东西
我还尝试添加了s.setSoTimeout(300000)
我还阅读了SSLSocketFactory
的官方文档,但找不到任何默认超时。也找不到SSLSocket
结论(调试此错误后)
这与流无关。它与SSLSocketFactory
或SSLSocket
也没有任何关系。这是代理中的超时问题。我完全搞错了 这实际上与流
无关。尝试从代码中提取流
:
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
,将生成一个空字符串。什么是s
?一个更完整的例子会更容易尝试。@Michael,我已经添加了完整的代码。我认为这不是一个流问题。如果您从REPL调用Stream.continuously(io.StdIn.readLine).
,它将无限期地等待。@jwvh您认为这与SSLSocket有什么关系吗?