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