gpt4 book ai didi

java - 我可以使用 Java NIO 从套接字中读取可用字节吗?

转载 作者:搜寻专家 更新时间:2023-10-31 08:27:57 24 4
gpt4 key购买 nike

我想知道在 Java NIO 套接字中是否有可用的字节可供读取。在 C/C++ 中,它可以使用这样的东西来完成:

int available(int fd){
long readable = 0;

if (ioctl(fd, FIONREAD, &readable) < 0){
// error
}

return (int) readable;
}

可以用 Java NIO 做同样的操作(使用 SocketChannelSelectorSocket 等)?

最佳答案

做不到。 API 存在,正式地说,通过 SocketChannel.socket().getInputStream().available(),但是 getInputStream() 操作将在非阻塞 channel 上失败, 所以它不能用于你的情况。

编辑: 现在您已经对我们进行了一些说明,您需要的东西在 Java 中仍然不存在,但是由于您处于非阻塞模式,所以一点也不重要.只需读入一个至少与套接字接收缓冲区一样大的缓冲区:读取的字节数是可以在没有阻塞的情况下读取的字节数,这正是您刚才所做的。

关于java - 我可以使用 Java NIO 从套接字中读取可用字节吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12620443/

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