下面是一个简单的使用 QTcpServer 的示例代码:
#include <QtNetwork/QTcpServer>
#include <QtNetwork/QTcpSocket>
class MyTcpServer : public QTcpServer
{
Q_OBJECT
public:
explicit MyTcpServer(QObject *parent = nullptr) : QTcpServer(parent) {}
protected:
void incomingConnection(qintptr socketDescriptor) override
{
// 创建新的 socket 连接
QTcpSocket *socket = new QTcpSocket(this);
// 将连接的 socket 设置为已有的 socket 描述符
if (!socket->setSocketDescriptor(socketDescriptor)) {
// 错误处理...
delete socket;
return;
}
// 处理新连接
connect(socket, &QTcpSocket::readyRead, this, &MyTcpServer::onReadyRead);
connect(socket, &QTcpSocket::disconnected, this, &MyTcpServer::onDisconnected);
qDebug() << "New client connected:" << socket->peerAddress().toString();
}
private slots:
void onReadyRead()
{
// 读取数据并进行处理
QTcpSocket *socket = qobject_cast<QTcpSocket *>(sender());
QByteArray data = socket->readAll();
// 处理数据...
qDebug() << "Received data from client:" << data;
}
void onDisconnected()
{
// 处理断开连接事件
QTcpSocket *socket = qobject_cast<QTcpSocket *>(sender());
qDebug() << "Client disconnected:" << socket->peerAddress().toString();
// 清理资源...
socket->deleteLater();
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MyTcpServer server;
if (!server.listen(QHostAddress::Any, 1234)) {
qDebug() << "Failed to start server:" << server.errorString();
return -1;
}
qDebug() << "Server started. Listening on port" << server.serverPort();
return a.exec();
}
这个示例代码演示了如何创建一个简单的 TCP 服务器,并接收来自客户端的连接,读取数据并进行处理。你可以根据需要进行进一步的功能扩展和修改。
内容由零声教学AI助手提供,问题来源于学员提问