TCP IP通信

时间:2013-03-05 13:17:04

标签: c++ tcp boost-asio

我在C ++中使用boost :: asio创建了一个客户端程序,它连接到TCP / IP服务器。当我发送命令说“llist”时它将返回

? "llist"
l1 32x32 Video "Video L1"
l2 512x512 Video "Audio L2"

每个句子以新行字符结尾,在传输结束时,它将有一个额外的新行字符。所以我的监听功能从套接字中读取两个字符

 len=_socket->read_some(boost::asio::buffer(reply,sizeof(reply)),error);// char reply[2];

问题是当我检查“\ n”时使用它是否不起作用。

  if(reply[0]!='\n')
    if(reply[1]!='\n')
       str.insert(i,1,reply[0]); //std::string str;

可能是什么问题?

1 个答案:

答案 0 :(得分:3)

你没有详细说明出现了什么问题,但是在猜测时,你当前的阅读方式会丢失有效字符(即reply[1]中的内容)。

您可以使用boost::asio::read_until来阅读整行:

boost::asio::read_until(socket, buffer, '\n');

并将空行视为传输结束。