我正在使用的库有问题。可能是图书馆,也可能是我使用错误!
基本上,当我这样做时(以毫秒为单位)
_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,这将需要每毫秒接收到新数据(假设您明智地读取了数据块并且该块足够大)!
如果仅传入流停滞超过一毫秒,则说明您正在超时。