Qt举一个socket的编程例子
下面是一个简单的Qt socket编程的例子,它创建一个客户端和一个服务器端,通过socket进行通信。
服务器端代码:
#include <QtNetwork>
#include <QObject>
class Server : public QObject
{
Q_OBJECT
public:
Server(QObject *parent = nullptr)
: QObject(parent)
{
server = new QTcpServer(this);
connect(server, &QTcpServer::newConnection, this, &Server::newConnection);
if (!server->listen(QHostAddress::Any, 1234)) {
qDebug() << "Server could not start!";
} else {
qDebug() << "Server started!";
}
}
public slots:
void newConnection()
{
QTcpSocket *socket = server->nextPendingConnection();
connect(socket, &QTcpSocket::readyRead, this, &Server::readyRead);
connect(socket, &QTcpSocket::disconnected, socket, &QTcpSocket::deleteLater);
socket->write("Hello client!");
socket->flush();
socket->waitForBytesWritten(3000);
}
void readyRead()
{
QTcpSocket *socket = qobject_cast<QTcpSocket *>(sender());
if (socket) {
qDebug() << "Message from client: " << socket->readAll();
}
}
private:
QTcpServer *server;
};
客户端代码:
#include <QtNetwork>
#include <QObject>
class Client : public QObject
{
Q_OBJECT
public:
Client(QObject *parent = nullptr)
: QObject(parent)
{
socket = new QTcpSocket(this);
connect(socket, &QTcpSocket::connected, this, &Client::connected);
connect(socket, &QTcpSocket::disconnected, this, &Client::disconnected);
connect(socket, &QTcpSocket::readyRead, this, &Client::readyRead);
socket->connectToHost("127.0.0.1", 1234);
}
public slots:
void connected()
{
qDebug() << "Connected to server!";
}
void disconnected()
{
qDebug() << "Disconnected from server!";
}
void readyRead()
{
qDebug() << "Message from server: " << socket->readAll();
}
private:
QTcpSocket *socket;
};
在主函数中创建一个服务器和一个客户端实例:
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Server server;
Client client;
return a.exec();
}
运行程序后,服务器会监听1234端口,并等待客户端连接。客户端会尝试连接到服务器,并接收来自服务器的消息
原文地址: http://www.cveoy.top/t/topic/i1Fp 著作权归作者所有。请勿转载和采集!