我必须遗漏一些东西但是如何判断我的空UDP数据包是否是通过DatagramChannel发送方法发送的?如果它返回ZERO字节,是否意味着我的空数据包被发送,或者它是否意味着底层套接字缓冲区已满?
来自API:
发送的字节数,也就是字节数 调用此方法时保留在源缓冲区中的内容 或者,如果此通道是非阻塞的,如果有,则可能为零 底层输出缓冲区中的数据报空间不足。
答案 0 :(得分:2)
如果您处于阻塞模式,则意味着零长度数据报被传输到套接字发送缓冲区。如果你处于非阻塞模式,这是一个折腾,但你可以通过使用选择器事先测试通道是否可写来解决它。
这也可能意味着根本没有发生任何事情,具体取决于您在评论中提到的错误状态。