QT5.0以上版本 incomingConnection不能被调用的解决方案

TcpSocket编程时,重写了incomingConnection这个函数,但是在服务器端运行的时候,提示客户端已经连接但是无法调用incomingConnection这个函数.

解决方案:

把incomingConnection(int socketDescriptor)改为 incomingConnection(qintptr socketDescriptor)即可

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
incomingConnection() 函数是在 QTcpServer 类中的一个虚函数,它在有新的客户端连接到服务器时被调用incomingConnection() 的主要作用是接受新的连接并创建一个新的 QTcpSocket 对象来处理该连接。 在使用 QTcpServer 创建一个 TCP 服务器时,我们需要先调用 listen() 函数来监听客户端的连接。当有客户端连接到服务器时,QTcpServer 会接受该连接并在一个新的线程中调用 incomingConnection() 函数。在 incomingConnection() 函数中,我们可以使用 nextPendingConnection() 函数获取一个新的 QTcpSocket 对象,然后可以对这个 QTcpSocket 对象进行操作,例如读取客户端发送的数据、向客户端发送数据、断开连接等。 下面是一个 incomingConnection() 函数的示例: ```cpp void MyServer::incomingConnection(qintptr socketDescriptor) { QTcpSocket *socket = new QTcpSocket(this); socket->setSocketDescriptor(socketDescriptor); // 处理新的连接 // ... // 断开连接 socket->disconnectFromHost(); } ``` 在 incomingConnection() 函数中,我们创建了一个新的 QTcpSocket 对象,并使用 setSocketDescriptor() 函数将其与客户端的套接字描述符关联起来。然后,我们可以对这个 QTcpSocket 对象进行操作,例如读取客户端发送的数据、向客户端发送数据、断开连接等。最后,我们使用 disconnectFromHost() 函数将 QTcpSocket 对象与客户端断开连接。 需要注意的是,在 incomingConnection() 函数中创建的 QTcpSocket 对象需要手动管理内存,即需要在不需要使用它时删除它。另外,incomingConnection() 函数是在一个新的线程中被调用的,因此需要注意线程安全问题。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值