服务端
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();
}