gpt4 book ai didi

java - InputDataStream.available() 始终为 0 Java Socket 客户端

转载 作者:行者123 更新时间:2023-12-01 23:48:32 24 4
gpt4 key购买 nike

为什么我的客户端代码的这一部分始终为零?

InputStream inputStream = clientSocket.getInputStream();
int readCount = inputStream.available(); // >> IS ALWAYS ZERO
byte[] recvBytes = new byte[readCount];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int n = inputStream.read(recvBytes);

...

最佳答案

可能是因为尚未收到任何数据。available() 尝试在不阻塞的情况下返回当前可用的数据量,因此如果您在建立连接后直接调用 available(),我预计大多数时候会收到 0。如果您等待一段时间,您很可能会发现 available() 返回不同的值。

但是,就我个人而言,我通常不使用 available() 。我根据情况创建了一个适当大小的缓冲区,然后读取它:

byte[] data = new byte[16 * 1024];
int bytesRead = stream.read(data);

这将阻塞,直到一些数据可用,但它很可能返回读取超过 16K 的数据。如果您想继续阅读直到到达流末尾,则需要循环。

基本上这取决于您想要做什么,但 available() 根据我的经验很少有用。

关于java - InputDataStream.available() 始终为 0 Java Socket 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16645437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com