boost::iostream readline 在 4096 字节后停止
boost::iostream readline stop after 4096 bytes
我正在编写一个通过网络传输大数据的程序,我正在使用boost asio iostream来做到这一点。
这是我的代码:
boost::asio::ip::tcp::iostream s;
s.connect("localhost","4000");
string ss;
getline(s,ss);
但是,当输出超过 4096 个字符时,getline 不会读取完整的行,并将其分成两条消息。
当输入很大时,读取单行的正确方法是什么?
我不是在复制这个
- Ubuntu Linux 14.10 64 位
- 海湾合作委员会 4.8.2
- boost_1_57
- 本地主机流量
您是否检查了输入中没有换行符?
如果我给它输入连续的输入流,我不会检测到此类问题。 例如,使用网猫,Live On Coliru
for a in {1..1024}; do echo -n 0123456789; done | nc -l 6767&
这将发送 10k 的数据而不带换行符
./a.out | wc
这将计算我们的代码返回的行、单词和字符:
0 1 10240
法典
供参考
#include <boost/asio.hpp>
#include <iostream>
int main() {
boost::asio::ip::tcp::iostream socket("127.0.0.1","6767");
std::string as_read;
std::getline(socket,as_read);
std::cout << as_read;
}
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 在UNIX系统中使用DIR查找文件的字节大小
- 是否可以用"iostream"包装现有的TCP/OOpenSSL会话
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- std::当在256字节边界上写入整数时,流的奇怪行为
- 需要从 istream 和 ostream 派生 iostream
- 当比特(而不是字节)的顺序至关重要时的持久性
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 如何在文件中查找字节序列
- luaL_dofile在已知良好的字节码上失败,可以使用未编译的版本
- 字节到位运算符重载C++
- 在java中读取c++字节的位字段
- std::带有自定义缓冲区的 iostream 不允许我写入
- 使用 std::vector::reverse_iterator 将 int 序列化为字节向量?
- 字节真的是最小可寻址单元吗
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- 如何将带有空字符的字节数组馈送到 std::iostream 中?
- boost::iostream readline 在 4096 字节后停止
- C++iostream读取,分隔符为MULTIPLE字节