我正在使用终端作为主机来输入数据(通过将任意一组字符复制/粘贴到终端中)。我想在我的应用程序中捕获此数据流。
我使用此代码示例作为客户端来侦听主机。但是,我收到的输出是一个小字符串,不等于缓冲区的大小。我预计代码会打印出字符串,等于缓冲区的大小。
> buffer size = 100;
> --
> sample input (copy/pasted into terminal): "here is a random string"
>
> current output: "h"
> expected output: "here is a random string"
我将如何捕获此"实时"数据流并使输出与缓冲区一致,而不是一个小字符串?
经过一些调查,recv()
函数不能保证收集我想要的所有数据。
为此,我遵循: https://stackoverflow.com/a/12696176/1121302
现在,我得到了预期的输出。
看起来他们使用的是UDP协议,而不是保证交付和订购的TCP。甚至您链接的页面也在页面的一半提到了这一点。
请记住:使用 UDP 数据报套接字发送的数据不能保证到达!