【发布时间】:2014-12-25 05:43:39
【问题描述】:
我正在编写一个通过网络传输大数据的程序,我正在使用 boost asio iostream 来完成它。
这是我的代码:
boost::asio::ip::tcp::iostream s;
s.connect("localhost","4000");
string ss;
getline(s,ss);
但当输出超过 4096 个字符时,getline 不会读取完整的行并将其分成两条消息。
当输入很大时读取单行的正确方法是什么?
【问题讨论】:
-
那是什么操作系统?它是真正在本地主机上还是涉及网络基础设施? (网卡、电缆、交换机?)。在我的盒子上,它的工作原理与宣传的完全一样,没有(明显)限制
-
os 是 linux,不,它是真正的 localhost。
-
能否提供发件人的代码? 编辑: 另外它与
char c; while(s.get(c)) ss += c;相比如何 -
@Galik 应该可以工作,实际上它可以与
while(getline(s,tmp)) ss += tmp一起工作,就像我阅读问题的方式一样 -
@sehe 啊是的,我应该在那里放一个行尾检查:
char c; while(s.get(c) && c != '\n') ss += c;
标签: c++ boost boost-asio