今天开发项目是遇到了一个头疼的问题,就是tcp通信时特殊字符自动转义的问题:
如:(/r/n)在接收端就会是(//r//n)
这个问题困扰了我许久,但是协议又写死了,所以上网找了很长时间找到了一个方法
就是使用fromRawData()方法
QString str = ui->sendText->toPlainText(); //读取控件上的数据
const char* ch = str.toStdString().c_str(); //先把用c_str函数把str转为const char*
//转之前必须使用StdString才能调用c_str
qDebug()<<ch;
qDebug()<<str;
QByteArray bar;
bar = QByteArray::fromRawData(ch,strlen(ch)); //主角在这里
//此函数可以保证内容不被修改或删除
qDebug()<<strlen(ch);
qDebug()<<bar;
tcp->write(bar); //发送数据
当然QString的fromRawData方法也可以,无非就是把char换成了Qchar。
希望可以帮到大家