2016-07-25 36 views

回答

0

以你的编号点依次是:

  1. 你可以找到答案,唯一的方法是通过对等应用程序确认收到。
  2. Java中没有这样的API。据我所知,在BSD套接字层也没有一个,但是我不熟悉Linux的外部限制,他们可能会介绍一些这样的事情。
+0

有没有更简单的API,只是为了检查(布尔响应)缓冲区是否为空? – PHcoDer

+0

没有任何形式的API。 – EJP

0

你无法知道。数据可能会被操作系统和TCP/IP堆栈缓冲,并且没有方法可以确定它是否实际上已经放置在电线上。即使知道它被放置在电线上也不能保证任何事情,因为它可能在运输途中丢失。

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

对于TCP协议栈将确保您的代码在数据在传输过程中丢失时得到通知,但在您收到确认消息之前可能会等待很多秒。