【问题标题】:How do I set read timeouts on java Socket/SSLSocket?如何在 java Socket/SSLSocket 上设置读取超时?
【发布时间】:2012-01-18 12:24:59
【问题描述】:

如果我有一个连接的套接字,并且它正在等待(阻塞)从远程机器接收一些数据,但不知何故,远程机器失去了连接,我怎样才能使它停止阻塞但超时一段时间后没有收到任何数据?我正在使用 Scanner 对象从套接字读取数据并使用 PrintWriter 对象进行写入,

// Get InputStream
scanner = new Scanner( clientSocket.getInputStream() );
// Get OutputStream
printWriter = new PrintWriter( clientSocket.getOutputStream(), true );

【问题讨论】:

标签: java sockets networking ssl timeout


【解决方案1】:

如果你使用的是socket,可以set timeout option

【讨论】:

  • @normalocity - 您的编辑毫无意义,该方法在您链接到的 javadoc 中显而易见。回滚。
  • 嗯——今天一定要买一盒百叶窗。不用担心。
  • 但是当我使用scanner.nextLine()从套接字读取时,它的规范显示它没有抛出任何SocketTimeoutException,那么我将如何检测何时发生超时?
  • 您传递给构造函数的底层 InputStream 将引发异常。超时异常未在 Scanner 类中声明,因为在这种情况下 Scanner 类不是引发异常的类。它仍然会在您的堆栈跟踪中冒泡。试试看 - 你会看到的。 :)
猜你喜欢
  • 2011-04-04
  • 1970-01-01
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-27
  • 2018-07-28
相关资源
最近更新 更多