【问题标题】:Read from a socket for n seconds从套接字读取 n 秒
【发布时间】:2013-09-27 08:51:48
【问题描述】:

我想设置一个读取套接字的超时时间,我在 C++ 中找到了它,我想在 Java 上转换它。

int readable_timeo(SOCKET fd, int sec){
fd_set rset;
struct timeval tv;


FD_ZERO(&rset);
FD_SET(fd, &rset);

tv.tv_sec = sec;
tv.tv_usec = 500000;

return (select(0, &rset, NULL, NULL, &tv));}

有什么建议吗?

感谢您的帮助!

【问题讨论】:

  • 读取超时用于阻塞读取操作。我相信 Java 中的 Selector 会告诉您有数据的套接字,而不是告诉您在给定时间内未能为您提供数据的套接字。这就是阻塞读取的目的。

标签: java c++ sockets timeout


【解决方案1】:

Java 中的简单等价物是 Socket.setSoTimeout()。您发布的代码的等效项(不是最简单的)是 Selector.select()。

【讨论】:

  • 你能给我一个这个场景的例子吗?:我有一个已经连接的套接字,我想将它传递到一个方法 readSocketTimeout(Socket s, int millisec) 中,该方法尝试读取毫秒时间。
猜你喜欢
  • 2020-10-20
  • 2015-09-01
  • 2011-10-29
  • 2019-04-02
  • 2013-10-12
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
相关资源
最近更新 更多