QTcpSocket 提供的几种接收和发送数据方法:
- write ( const char *, qint64 ) : qint64
- write ( const char * ) : qint64
- write ( const QByteArray & ) : qint64
- writeData ( const char *, qint64 ) : qint64
- read ( char * data, qint64 maxSize ): qint64
- read ( qint64 maxSize ):QByteArray
- readAll ():QByteArray
- readLine ( char * data, qint64 maxSize ):qint64
- readLine ( qint64 maxSize = 0 ):QByteArray
发送数据的示例代码:
1)write ( const QByteArray & ) : qint64
//用于暂存要发送的数据
QByteArray block;
//使用数据流写入数据
QDataStream out(&block,QIODevice::ReadWrite);
//设置数据流的版本,客户端和服务器端使用的版本要相同
out.setVersion(QDataStream::Qt_DefaultCompiledVersion);
//设置发送长度初始值为0
out << (quint16) 0;
//设置发送内容
out<<"hello, mike";
//回到字节流起始位置
out.device()->seek(0);
//重置字节流长度
out << (quint16) (block.size()-sizeof(quint16));
//往套接字缓存中写入数据,并发送
tcpSocket->write(block);
2)write ( const char *, qint64 ) : qint64
QString str = "hello, mike";
tcpSocket->write(a, a.length());
3)数据流直接使用 QIODevice
QDataStream in(tcpSocket);
in<< quint16(0xFFFF); //此时QIODevice加载了此数据,而且直接发送出去
quint16 length = 0;
QDataStream out(tcpSocket);//如果此时tcpSocket直接有数据发送过来
out >> length;//length获得第一个整型值,并在tcpSocket中清空该数据