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中保存的就是中文
发表评论
要发表评论,您必须先登录。