您好,欢迎来到六九路网。
搜索
您的当前位置:首页QTcpSever和QTcpSocket实现多线程客户端和服务端;

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

来源:六九路网

QTcpServer提供了newConnection信号, 可以通过connect实现连接槽函数,利用nextPendingConnection

函数获取连接的QTcpSocket * ;也可以继承QTcpServer派生, 复写虚函数incomingConnection(在连接上时,

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

 virtual void incomingConnection(qintptr handle);

通过setSocketDescriptor 函数建立QTcpSocket;

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

QTcpSocket有几个继承于 QAbstractSocket, 而QAbstractSocket又继承于QIODevice, 可以看出QtcpSocket可以类似

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)读取指定长度的数据;

 


转载于:https://www.cnblogs.com/yinwei-space/p/10774328.html

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务