拒绝到TCP服务器的传入连接

多罗

在我的程序中,我想为我的TCP服务器设置客户端的限制。

目前,我的传入连接代码为:

void TCPServer::incomingConnection(int handle)
{
    QPointer<TCPClient> client = new TCPClient(this);
    client->SetSocket(handle);

    clients[handle] = client;

    QObject::connect(client, SIGNAL(MessageRecieved(int,QString)), this, SLOT(MessageRecieved(int,QString)));
    QObject::connect(client, SIGNAL(ClientDisconnected(int)), this, SLOT(ClientDisconnected(int)));

    emit ClientConnected(handle);
}

现在,我想将客户端数量限制为例如100个活动连接总数。我是否必须以某种特殊的方式处理它,或者只是使用简单的if(clients.count() < 100)语句将其忽略

void TCPServer::incomingConnection(int handle)
{
    if(clients.count() < 100)
    {
        QPointer<TCPClient> client = new TCPClient(this);
        client->SetSocket(handle);

        clients[handle] = client;

        QObject::connect(client, SIGNAL(MessageRecieved(int,QString)), this, SLOT(MessageRecieved(int,QString)));
        QObject::connect(client, SIGNAL(ClientDisconnected(int)), this, SLOT(ClientDisconnected(int)));

        emit ClientConnected(handle);
    }
}

这样可以行吗?未处理的连接是否处于活动状态(已连接到服务器),但未在我的clients词典中列出

内贾特

您可以使用QTcpServer::setMaxPendingConnections ( int numConnections )它设置到QTcpServer的最大传入连接数。

从Qt文档中:

无效的QTcpServer :: setMaxPendingConnections(int numConnections)

将待处理的接受连接的最大数量设置为numConnections。在调用nextPendingConnection()之前,QTcpServer最多接受numConnections个传入连接。默认情况下,该限制为30个挂起的连接。

服务器达到其最大未决连接数后,客户端仍可能能够连接(即QTcpSocket仍可以发出connectd()信号)。QTcpServer将停止接受新连接,但是操作系统仍可以将它们保持在队列中。

因此,如果连接数超过numConnections,则服务器将停止接受新连接,但OS可能会将它们排队。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Telnet拒绝简单TCP服务器上的连接

与服务器localhost:8080的连接被拒绝

IRC服务器拒绝我的连接

Websocket服务器连接被拒绝

Netcat服务器连接被拒绝

JMeter连接Apache服务器被拒绝

Domino 服务器拒绝连接

使用FileZilla到SFTP服务器的用户连接拒绝连接

等待传入的 tcp/ip 服务器请求

无法使用go和docker连接到mysql服务器-拨打TCP 127.0.0.1:3306:连接:连接被拒绝

无法连接到服务器:连接被拒绝 服务器是否在主机上运行...并在端口 5432 上接受 TCP/IP 连接?

无法连接到服务器:连接被拒绝服务器是否在主机“ 127.0.0.1”上运行并接受端口5432上的TCP / IP连接?

与远程服务器的TCP连接

Java RMI客户端和远程服务器连接被拒绝到本地主机

AWS上的Kubernetes集群,到服务器localhost:8080的连接被拒绝

由于服务器拒绝了连接,因此无法部署到Heroku

为什么我的连接被拒绝到Amazon S3服务器?

尝试连接到蓝牙服务器时连接被拒绝

尝试连接到服务器时,Sshutle连接被拒绝

PulseAudio服务器连接失败:连接被拒绝

通过VPN连接时,FTP服务器连接被拒绝

PG :: ConnectionBad:无法连接到服务器:连接被拒绝

连接到 Web 服务器时连接被拒绝

从Java游戏服务器到客户端的TCP和UDP连接

将TcpClient连接到远程Tcp服务器,并绑定到特定的本地端口

Rails服务器拒绝在浏览器中连接

Putty拒绝与所有远程服务器的连接

PHPMailer GoDaddy服务器SMTP连接被拒绝

服务器关闭时处理拒绝连接的更好方法