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