Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:API以查找写入非阻塞TCP SocketChannel的所有字节是否已发送到接收器?_Java_Sockets_Nonblocking_Tcpsocket - Fatal编程技术网

Java:API以查找写入非阻塞TCP SocketChannel的所有字节是否已发送到接收器?

Java:API以查找写入非阻塞TCP SocketChannel的所有字节是否已发送到接收器?,java,sockets,nonblocking,tcpsocket,Java,Sockets,Nonblocking,Tcpsocket,这是一个类似的答案,虽然不是我想要的。我想做以下两件事: 我想知道是否所有字节都已发送到接收器 我还想知道套接字输出缓冲区的当前剩余容量,而不尝试写入它 将编号的点按顺序排列: 您可以找到答案的唯一方法是让对等应用程序确认收据 Java中没有这样的API。据我所知,在BSD套接字层也没有,但我不熟悉Linux的外部限制,他们可能已经引入了一些这样的东西 将编号的点按顺序排列: 您可以找到答案的唯一方法是让对等应用程序确认收据 Java中没有这样的API。据我所知,在BSD套接字层也没有,但我不熟

这是一个类似的答案,虽然不是我想要的。我想做以下两件事:

  • 我想知道是否所有字节都已发送到接收器
  • 我还想知道套接字输出缓冲区的当前剩余容量,而不尝试写入它

  • 将编号的点按顺序排列:

  • 您可以找到答案的唯一方法是让对等应用程序确认收据
  • Java中没有这样的API。据我所知,在BSD套接字层也没有,但我不熟悉Linux的外部限制,他们可能已经引入了一些这样的东西

  • 将编号的点按顺序排列:

  • 您可以找到答案的唯一方法是让对等应用程序确认收据
  • Java中没有这样的API。据我所知,在BSD套接字层也没有,但我不熟悉Linux的外部限制,他们可能已经引入了一些这样的东西

  • 你不可能知道。数据可能由操作系统和TCP/IP堆栈进行缓冲,并且没有方法确定数据是否已实际放置在线路上。即使知道它被放在电线上也不能保证任何东西,因为它可能在运输过程中丢失

    对于UDP,除非您编写基于UDP的协议以便远程系统确认数据,否则您永远不会知道目标系统是否接收到数据


    对于TCP协议栈,如果数据在传输过程中丢失,协议栈将确保您的代码得到通知,但在您收到确认之前可能需要几秒钟。

    您无法知道。数据可能由操作系统和TCP/IP堆栈进行缓冲,并且没有方法确定数据是否已实际放置在线路上。即使知道它被放在电线上也不能保证任何东西,因为它可能在运输过程中丢失

    对于UDP,除非您编写基于UDP的协议以便远程系统确认数据,否则您永远不会知道目标系统是否接收到数据


    对于TCP协议栈,如果数据在传输过程中丢失,协议栈将确保您的代码得到通知,但在您收到确认之前可能需要很多秒。

    是否有更简单的API,仅用于检查缓冲区是否为空(布尔响应)?没有任何形式的API。是否有更简单的API,仅用于检查(布尔响应)缓冲区是否为空?没有任何形式的API。