【发布时间】:2017-03-09 15:29:58
【问题描述】:
如果in.readLine 花费的时间超过1 minute,Stream.continually 返回空字符串
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 的官方文档,但找不到任何默认的 TimeOut。也没有找到SSLSocket
结论(调试此错误后)
这与 Stream 无关。它与SSLSocketFactory 或SSLSocket 也没有任何关系。这是代理中的超时问题。我全都错了。
【问题讨论】:
-
什么是
s?一个更完整的例子会更容易尝试。 -
@Michael,我已经添加了完整的代码
-
我认为这不是
Stream问题。如果您从 REPL 调用Stream.continually(io.StdIn.readLine)...,它将无限期等待。 -
@jwvh 你认为它与 SSLSocket 有什么关系吗?
标签: scala stream bufferedreader