如果您从read()
(具有无限读取超时)检索到的InputStream
上调用Socket
,则传递N
字节的缓冲区并返回{{1} },你如何区分这两种情况:
N
个字节,并且您的缓冲区恰好具有相同的大小
N
将阻止read()
且缓冲区太小
N
不应阻止并仅返回额外数据我能想到的第一个解决方案是确保read()
大于内部N
接收缓冲区,但我不知道该值应该是什么,而且这看起来非常脆弱。
另一种可能性是暂时将套接字的读取超时更改为第二次Socket
调用的非常短的一次(如几毫秒),这样如果我们遇到1),它就不会't 真的阻止。这听起来像是一个黑客。