java - ConnectionTimeout 与 SocketTimeout

标签 java android tcp httpconnection

我正在使用的库有问题。可能是图书馆,也可能是我用错了!

基本上,当我这样做时(超时以毫秒为单位)

_ignitedHttp.setConnectionTimeout(1);  // v short
_ignitedHttp.setSocketTimeout(60000);  // 60 seconds

没有产生超时异常并且工作正常,但是,当我执行以下操作时,

_ignitedHttp.setConnectionTimeout(60000);  // 60 seconds
_ignitedHttp.setSocketTimeout(1);          // v short

我得到一个套接字异常。

那么,我的问题是为什么我不能模拟连接异常?我是否误解了套接字和连接超时之间的区别?图书馆是 here (尚未正式发布)。

最佳答案

连接超时仅在启动 TCP 连接时发生。如果远程机器没有应答,通常会发生这种情况。这意味着服务器已关闭,您使用了错误的 IP/DNS 名称、错误的端口或与服务器的网络连接已关闭。

套接字超时专门用于监控连续传入的数据流。如果数据流在指定的超时时间内被中断,则连接被视为停止/断开。当然,这只适用于一直接收数据的连接。

通过将套接字超时设置为 1,这将要求每毫秒接收一次新数据(假设您明智地读取数据 block 并且 block 足够大)!

如果只有传入的流停止超过一毫秒,您将遇到超时。

关于java - ConnectionTimeout 与 SocketTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7360520/

相关文章:

java - 不使用局部变量的值

安卓 : Speeding up multiple small file downloads

java - 有没有办法将增量更改热部署到 Android 设备上? [说,像 JRebel]

android - 调试 Android 应用程序时出现 No source attachment 错误

linux - 套接字选项在 Linux 中是本地的吗?

tcp - iptable ubuntu 允许多个特定 ip 到特定端口,放弃其余的吗?

c# - 异步线程 tcp 服务器

Java:在不知道输入行数的情况下读取输入

java - JSP 和发送对象

java - Android 内存使用情况