在Qt中,可以使用QTcpServer类来创建TCP服务端。下面是一个简单的示例代码:
#include <QTcpServer>
#include <QTcpSocket>
class MyTcpServer : public QTcpServer
{
Q_OBJECT
public:
explicit MyTcpServer(QObject *parent = nullptr)
: QTcpServer(parent)
{
// 监听指定端口
if (!listen(QHostAddress::Any, 1234)) {
qDebug() << "Failed to start server";
} else {
qDebug() << "Server started";
}
}
protected:
void incomingConnection(qintptr socketDescriptor) override
{
// 创建新的socket连接
QTcpSocket *socket = new QTcpSocket(this);
// 设置socket描述符
socket->setSocketDescriptor(socketDescriptor);
// 连接信号槽,处理接收到的数据
connect(socket, &QTcpSocket::readyRead, this, &MyTcpServer::onReadyRead);
qDebug() << "New client connected";
// 向客户端发送欢迎信息
socket->write("Welcome to the server!");
// 断开连接时自动释放资源
connect(socket, &QTcpSocket::disconnected, socket, &QTcpSocket::deleteLater);
}
private slots:
void onReadyRead()
{
QTcpSocket *socket = qobject_cast<QTcpSocket *>(sender());
if (socket) {
QByteArray data = socket->readAll();
// 处理接收到的数据...
qDebug() << "Received:" << data;
// 回复客户端消息
socket->write("Message received");
// 关闭连接
socket->disconnectFromHost();
}
}
};
以上是一个简单的QTcpServer派生类,它监听指定端口并在有新的客户端连接时创建相应的socket,并处理接收到的数据。你可以根据实际需求进行修改和扩展。
内容由零声教学AI助手提供,问题来源于学员提问