QT中封装的socket类有QUdpSocket 和QTcpSocket,但是发送和接受的函数
1 2 3 |
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;
1 2 3 4 |
QHostAddress serv_add("172.16.85.160"); QByteArray byt; byt.append(str.toUtf8()) writeDatagram (byt.constData(),serv_add,SERVER_PORT); |
接收端
1 2 3 4 |
QByteArray byt_recv; readDatagram(byt_recv.data(),len,0,0); QStrign str; str=QString::fromUtf8(byt_recv); |
此时str中保存的就是中文
近期评论