Qt TCP网络通信

服务端

Server.pro

Qt += network

server.h

#include <QTcpServer>
#include <QTcpSocket>

class Server
{
private:
    QTcpServer *m_server;
    QTcpSocket *m_socket;

public:
    Server();
    ~Server();

//槽函数
private slots:
    void newConnection();
    void readyRead();
}

server.cpp

Server::Server()
{
    server = new QTcpServer(this);
    connect(server, SIGNAL(newConnection()), this, SLOT(newConnection()));

    //监听客户端连接
    server->listen(QHostAddress::Any, 8888);
}

Server::~Server()
{
    delete server;
    delete socket;
}

void Server::newConnection()
{
    qDebug()<<"客户端连接...";

    socket = server->nextPendingConnection();
    connect(socket, SIGNAL(readyRead()), this, SLOT(readyRead()));
}

void MainWindow::readyRead()
{
    qDebug()<<"客户端:" + socket->readAll();

    //向客户端发数据
    socket->write(QString("你好,客户端!").toUtf8());
}

客户端

Client.pro

Qt += network

client.h

#include <QTcpSocket>

class Client
{
private:    
    QTcpSocket *m_socket;

public:
    Client();
    ~Client();

private slots:
    void connected();
}

client.cpp

Client::Client()
{
    socket = new QTcpSocket(this);

    //与服务端连接成功时触发connected信号
    connect(socket, SIGNAL(connected()), this, SLOT(connected()));

    //连接服务端
    socket->connectToHost("127.0.0.1", 8888);
}

Client::~Client()
{
    delete m_socket;
}

void Client::connected()
{
    qDebug() << "连接成功!";

    //向服务端发数据
    socket->write(QString("你好,服务端").toUtf8());

    //接收到数据时触发readyRead信号
    connect(socket, SIGNAL(readyRead()), this, SLOT(readyRead()));
}

void Client::readyRead()
{
    qDebug()<< "服务端:" + socket->readAll();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值