QTcpSever和QTcpSocket实现多线程客户端和服务端;

QTcpServer提供了newConnection信号, 能够经过connect实现链接槽函数,利用nextPendingConnectionsocket

函数获取链接的QTcpSocket * ;也能够继承QTcpServer派生, 复写虚函数incomingConnection(在链接上时,tcp

会自动触发该函数,传参handle);函数

 virtual void incomingConnection(qintptr handle);

经过setSocketDescriptor 函数创建QTcpSocket;ui

virtual bool setSocketDescriptor(qintptr socketDescriptor, SocketState state = ConnectedState,
                             OpenMode openMode = ReadWrite);
QTcpSocket *pSock = new QTcpSocket;
if( ! pSock->setSocketDescriptor(handle) )
{
    ...
}

QTcpSocket有几个继承于 QAbstractSocket, 而QAbstractSocket又继承于QIODevice, 能够看出QtcpSocket能够相似blog

IO接口同样的进行操做;继承

virtual void connectToHost(const QString &hostName, quint16 port, OpenMode mode = ReadWrite, NetworkLayerProtocol protocol = AnyIPProtocol);
virtual void connectToHost(const QHostAddress &address, quint16 port, OpenMode mode = ReadWrite);

经过connectToHost函数能够链接服务端, 在链接服务端时,将发送信号:接口

void connected();
void disconnected();
void stateChanged(QAbstractSocket::SocketState);

当socket缓冲区内有数据时,将触发readyRead信号, 利用 bytesAvailable函数能够获取缓冲区内的数据长度, read(length)读取指定长度的数据;ip

相关文章
相关标签/搜索