【问题标题】:C++ recv socket with smaller buffer具有较小缓冲区的 C++ recv 套接字
【发布时间】:2016-01-20 21:47:30
【问题描述】:

我有一台服务器通过套接字连接向我的客户端发送文件。发送的消息是一个包含有效负载长度和有效负载本身的结构。

问题是,如果有效负载有 270 个字节而我的缓冲区只有 256 个字节,当我再次调用接收并将第一次接收时收到的严格的有效负载附加到第二次接收的内容时,输出文件会得到一些它们之间的随机数据。

例如,我发送“the quick brown fox jumps over the lazy dog”并且缓冲区以“over”结束,它将写入文件:“the quick brown fox jumps over%&$9f-6 $+懒狗”

【问题讨论】:

  • 您使用strcat() 追加? 不要! read() 和 recv() 不会给您以 null 结尾的字符串。相反,让您的程序记住两个块的大小。

标签: sockets recv


【解决方案1】:

在第一次接收时使用 NULL 字符“\0”终止接收到的字符串,然后再附加第二次接收时收到的字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-15
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多