从终端主机读取实时流数据

时间:2013-09-30 20:07:37

标签: c sockets tcp stream

我使用终端作为主机来输入数据(通过将任意字符集复制/粘贴到终端中)。我想在我的应用程序中捕获这个数据流。

我使用this code sample作为客户端来收听主机。但是,我收到的输出是一个小字符串,不等于缓冲区的大小。我预计打印出字符串的代码,等于缓冲区的大小。

> buffer size = 100;
> --
> sample input (copy/pasted into terminal): "here is a random string" 
>
> current output: "h" 
> expected output: "here is a random string"

我如何捕获这个“实时”数据流并使输出与缓冲区一致,而不是一个小字符串?

2 个答案:

答案 0 :(得分:2)

经过一些调查后,recv()函数无法保证收集我想要的所有数据。

为此,我遵循:https://stackoverflow.com/a/12696176/1121302

现在,我得到了预期的输出。

答案 1 :(得分:0)

看起来他们正在使用UDP协议而不是TCP来保证交付和订单。甚至你链接的页面都提到了页面的一半。

  

请记住:使用UDP数据报套接字发送的数据无法保证到达!