QT中封装的socket类有QUdpSocket 和QTcpSocket,但是发送和接受的函数
qint64 writeDatagram ( const char * data, qint64 size, const QHostAddress & address, quint16 port )
qint64 writeDatagram ( const QByteArray & datagram, const QHostAddress & host, quint16 port )
qint64 readDatagram ( char * data, qint64 maxSize, QHostAddress * address = 0, quint16 * port = 0 )
都是char类型的,而从文本中获取的数据是QString,如果是英文,一个字符占一个字节,直接用QByteArray 中的append方法即可
但是如果是中文,仅仅append,是不行的,QString.append(QByteArray)显示的话中文是乱码
需要在发送和接受的过程进行处理
发送时候,要发送的文本时QString str;
QHostAddress serv_add("172.16.85.160");
QByteArray byt;
byt.append(str.toUtf8())
writeDatagram (byt.constData(),serv_add,SERVER_PORT);
接收端
QByteArray byt_recv;
readDatagram(byt_recv.data(),len,0,0);
QStrign str;
str=QString::fromUtf8(byt_recv);
此时str中保存的就是中文