gpt4 book ai didi

java - Nio Selector.select IO 准备情况

转载 作者:行者123 更新时间:2023-12-02 04:46:53 30 4
gpt4 key购买 nike

在java NIO中,Selector.select()是否保证Socket Channel上至少有一个完整的UDP数据报内容可用,或者理论上,当数据报少于一个数据报时,比如几个字节,Selector可以唤醒?

如果传输协议(protocol)是 TCP,会发生什么情况,对于 Selector.select() 来说,与 UDP 有区别吗?

来自 API:选择一组按键,其相应 channel 准备好进行 I/O 操作。

但是它没有具体说明就绪的含义。

所以我的问题:

  • 传入的数据报/流如何从硬件传输到 Java 应用程序套接字( channel )。

  • 当使用 UDP 或 TCP 客户端时,是否应该假设至少收到一个数据报,或者当只有一部分数据报可用时选择器可以唤醒?

最佳答案

It doesn't however specify what ready means.

So my questions:

  • how incoming packages/streams go from hardware to Java application Socket (Channels).

它们到达 NIC,在那里进行缓冲,然后传递到网络协议(protocol)栈,并从那里传递到套接字接收缓冲区。当您调用read().时,可以从那里检索它们。

  • when using UDP or TCP client, should one assume that at least one package is received

您的意思是数据包。实际上,对于 UDP,您的意思是数据报。对于 UDP,您可以假设已接收到整个数据报。

or Selector could wake when there is only a part of [packet] available?

对于 TCP,您可以假设至少有一个字节流末尾可用。 TCP 级别不存在“包”或“数据包”或“消息”之类的东西。

关于java - Nio Selector.select IO 准备情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29599024/

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