【发布时间】:2017-05-14 22:58:19
【问题描述】:
在 Java 中,可以将几个字节(或者许多小于缓冲区大小的字节)写入套接字的输出流,然后刷新它,以防某些字节需要立即发送。在 Win32 API 中,似乎没有任何类型的刷新功能,所以我觉得在这种情况下“刷新”只是用虚拟字节(可能为零)填充缓冲区的其余部分,以强制发送函数,嗯,发送数据。我的问题是,Java(甚至可能是 C#)如何在后台实现这样的事情?也就是说,如果我有一个 Java 套接字与某个地方的 Win32 套接字通信,考虑到需要一些刷新,它们将如何通信?例如,如果要刷新 Java 套接字的缓冲区(在套接字的 OutputStream 上调用 flush),我会在 Win32 端得到什么(通过调用 recv)?反过来呢?我会看到一些填充行为吗? Win32 端是否需要知道 Java 端的缓冲区大小?不相关的东西?
【问题讨论】:
-
您是否尝试过寻找来源? .Net core 在 github 上完全可用,你可以看到它是如何实现的
标签: java sockets winapi tcp flush