【问题标题】:Reading live stream data from a terminal host从终端主机读取直播数据
【发布时间】:2013-10-06 19:49:08
【问题描述】:

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

我使用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"

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

【问题讨论】:

  • 在调用recv()之前freeaddrinfo()会不会有不好的影响?
  • @ryyker 见my answer。我依靠recv() 收集所有数据。
  • 谢谢。不要忘记将您的答案标记为已回答

标签: c sockets tcp stream


【解决方案1】:

经过一番调查,recv() 函数不能保证收集我想要的所有数据。

为此,我关注了:https://stackoverflow.com/a/12696176/1121302

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

【讨论】:

    【解决方案2】:

    看起来他们使用的是 UDP 协议,而不是保证交付和订单的 TCP。甚至您链接的页面在页面的中途也提到了这一点。

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

    【讨论】:

    • More 讨论主题。
    猜你喜欢
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    相关资源
    最近更新 更多