看看下面的方法是否满足你的要求?
tcpServer = new QTcpServer(this);
tcpServer->listen(QHostAddress::Any, 8888);
//设置响应TCP客户端连接请求的命令
connect(tcpServer, &QTcpServer::newConnection,
[=]()//这里是一个Lamda表达式函数定义
{
OnProcessNewConnectEvent2();
}
);
void MainWindow::OnProcessNewConnectEvent2()
{
if(tcpServer==nullptr)
return;
//取出建立好连接的套接字
QTcpSocket* tcpSocket = tcpServer->nextPendingConnection();
//获取对方的IP和端口
QString ip = tcpSocket->peerAddress().toString();
qint16 port = tcpSocket->peerPort();
QString temp = QString("[%1:%2]:成功连接").arg(ip).arg(port);
ui->textEditRead->setText(temp);
//设置响应接收处理方法(这里也是采用Lamda表达式函数来写的)
connect(tcpSocket, &QTcpSocket::readyRead,
[=]()
{
//从通信套接字中取出内容
QByteArray array = tcpSocket->readAll();
ui->textEditRead->append(array);
//给对方发送数据
QString str = "abcd";
tcpSocket->write(str.toUtf8().data());
}
);
//设置响应远方断开处理方法(这里也是采用Lamda表达式函数来写的)
connect(tcpSocket, &QTcpSocket::disconnected,
[=]()
{
//经过测试这里的tcpSocket虽然在调试的时候QT提示是无效指针,但实际确实是等于原来有效的tcpSocket指针值
}
);
}