Qt学习之网络编程

由于项目的要求,需要用到网络编程,我选择使用Qt来搭建程序,于是就在这篇文章中将Qt的 QTcpServer Class 翻译一遍,然后开始正式写码

PublicFunction

QTcpServer(QObject *parent = nullptr)
virtual ~QTcpServer()
void close()
QString errorString() const
virtual bool hasPendingConnections() const
bool isListension() const
bool listen(const QHostAddress &address = QHostAddress::Any, qint16 port = 0)
int maxPendingConnections() const
virtual QTcpSocket * nextPendingConnection()
void pauseAccepting()
QHostAddress serverAddress() const
QAbstractSocket::SocketError serverError() const
quint16 serverPort() const
void setMaxPendingConnections(int numConnections)
void setProxy(const QNetworkProxy &networkProxy)
bool setSocketDescriptor() const
bool waitForNewConnection(int msec = 0, bool *timedOut = nullptr)

Signal

void acceptError(QAbstractSocket::SocketError socketError)
void newConnection()

Detailed Description

本类提供了TCP编程的基本方法。
本类可以使接受TCP连接请求变为可能,你可以指定一个port口,或者让QTcpServer自动选择一个,你可以监听指定IP发过来的消息或者所有物理地址上的消息
调用函数listen()来监听所有接受的连接请求,每当有一个客户端连接到服务器上的时候,都会发射信号 newConnection()
调用函数 nextPendingConnection()来接收挂起的连接作为一个连接上的QTcpSocket,这个函数将返回一个指向QAbstractSocket::ConnectState中的QTcpSocket的指针,这样就可以在客户端来使用这个连接了。
如果发生了错误,函数serverError()将返回错误的类型,函数errorString()可以生成方便阅读的文本
当监听到连接的时候,服务器监听到的地址和port口将可以使用函数serverAddress()和函数serverPort来查看
调用函数close()来让QTcpServer停止监听请求的连接
尽管QTcpServer通常用在时间循环中,当然不用也是可以的,在这种情况下,你需要使用函数 waitForNewConnection(),在通道阻塞或超时之前

Member Function Documentation

QTcpServer::QTcpServer(QObject *parent = nullptr)

构造函数

QTcpServer::~QTcpServer()

析构函数,这个析构函数将会关闭所有的套接字的连接

void QTcpServer::acceptError(QAbstractSocket::SocketError socketError) [signal]

当有一个连接发生错误的时候,就发射这个信号,这个套接字参数表述了错误的类型

void QTcpServer::addPendingConnection(QTcpSocket *socket) [protected]

这个函数是 由函数 QTcpServer::incomingConnection() 添加新连接的套接字的时候被调用的

void QTcpServer::close()

关闭此套接字的连接

QString QTcpServer::errorString() const

返回最后出现的故障信息

bool QTcpServer::hasPendingConnections() const [virtual]

如果这个服务添加了一个连接则返回真,否则返回假

void QTcpServer::incomingConnection(qintptr socketDescriptor) [virtual protected]

此虚函数,是由QTcpServer发现当一个新的链接可用的时候调用的,此套接字描述符主要是接受连接的本地套接字描述符
基本的实现是先创造一个QTcpSocket,设置套接字描述符,然后储存QTcpSocket,然后再内部的连接列表中添加一个连接,最后发射newConnection()信号
重载此函数,报纸在连接可用的时候可以改变服务器的行为
如果服务器使用QNetworkProxy()函数,此套接字描述符可能会没有,可能只能用函数QTcpSocket::setSocketDescriptor()
注意:如果有其他的套接字通过重载此方法来创建,需要调用函数 addPendingConnection()函数来添加新的连接
注意:如果你想操作另一个线程的一个新接入的连接来作为一个新的QTcpSocket对象,你需要通过 socketDescriptor 到另一个线程中,并且使用它的setPendingConnection()函数来创建这个QTcpSOcket对象,

bool QTcpServer::isListening() const

如果这个服务当前正在监听进入的连接,返回真,否者反之

bool QTcpServer::listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0)

告诉服务器要监听的客户端的连接的地址和端口,如果port口设置为0,则将会自动的选择,如果地址是any则将会监听所有的网络接口
如果成功则返回真,反之反之

int QTcpServer::maxPendingConnectionst() const

返回最大数量的添加的连接,默认是30

void QTcpServer::newConnect()

如果有新的连接可用的话,这个信号将一直发出

QTcpSocket * QTcpServer::nextPendingConnection() [virtual]

返回下一个增加的连接,作为一个连接的QTcpSocket对象
这个套接字是作为服务器的子来创建的,这意味着当QTcpServer对象被析构的时候,这个socket也会删除,这是一个好的方式来删除对象
如果没有新加的连接的时候,这个函数将会返回0

void QTcpServer::pauseAccepting()

暂停接受新的连接,在排队的连接将保持排队。

QNetworkProxy QTcpServer::proxy() const

返回网络的套接字的代理,默认这个是存在的

void QTcpServer::resumeAccepting()

恢复开始接收新的连接

QHostAddress QTcpServer::serverAddress() const

返回服务器的IP,如果这个服务器在监听新的连接,要不然将会返回空
。。
其他的用到再看

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值