我正在下载一个大文件(比如大约100mb),我不时地收到SocketException: Read timed out
。
我想提高套接字超时。实际上,我正在考虑将套接字超时设置为0(无限),因为我的应用程序下载的文件的大小最终可能会超过300mb,甚至超过300mb。这是一个好习惯吗?
关于套接字超时,超时倒计时何时实际开始?我的意思是,当发生套接字超时时,是否意味着连接仍处于活动状态并且文件仍在不断下载但只是超时,因为配置了套接字超时?或者当倒计时表明连接仍然存在但服务器没有发送数据时,倒计时开始了;倒计时开始并达到超时?
因为如果案件是后者,那么我不会选择无限制,因为它会导致服务器不向我发送数据而不是我的应用程序。
答案 0 :(得分:0)
我正在下载一个大文件(比如大约100mb)并且我收到SocketException:不时读取超时。
因此,您的读取超时时间太短,或者对等方没有足够的响应能力来满足您的需求。
我正在考虑提高套接字超时。
从什么?
实际上,我正在考虑将套接字超时设置为0(无限),因为我的应用程序下载的文件的大小最终可能会超过300mb,甚至超过300mb。这是一个好习惯吗?
读取超时与下载大小无关。它与请求的预期服务时间有关。我通常建议将其设置为预期服务时间的两倍。读取超时的目的是告诉你对等体什么时候没有响应。
关于套接字超时,超时倒计时何时实际开始?
输入读取方法时。
我的意思是,当发生套接字超时时,是否意味着连接仍然存在
是
并且文件仍在不断下载
没有。在超时期限内没有数据到达。
但只是超时,因为配置了套接字超时?
读取超时是因为(a)您设置了读取超时并且(b)它已过期。不要过分思考。
当倒计时表明连接仍然存在但服务器没有发送数据时,倒计时会开始;倒计时开始并达到超时?
见上文。
因为如果案件是后者,那么我不会选择无限制,因为它会导致服务器不向我发送数据而不是我的应用程序。
读取超时是由未在接收应用程序配置的超时时间内到达的数据引起的。超时可能太短,这是应用程序的错误,或者可能是因为对等方没有发送任何内容,这是对等方的错,或两者兼而有之。无法决定先验。