在socket中发送中文的方法

 

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中保存的就是中文

你可能感兴趣的:(server,socket,qt)