QT示例:基于TCP点对点通讯
下载:基于TCP点对点通讯
一、 概述
二、TCP 协议工作原理
三、TCP 编程模型
四、基于TCP点对点通讯示例
1、客户端
客户端的代码比服务器稍简单,总的来说,使用QT中的QTcpSocket类与服务器进行通信只需要以下5步:
1)创建QTcpSocket套接字对象
socket = new QTcpSocket();
2)使用这个对象连接服务器
socket->connectToHost(IP, port);
3)使用write函数向服务器发送数据
socket->write(data);
4)当socket接收缓冲区有新数据到来时,会发出readRead()信号,因此为该信号添加槽函数以读取数据
QObject::connect(socket, &QTcpSocket::readyRead, this, &MainWindow::socket_Read_Data);
void myWidget::socket_Read_Data()
{
QByteArray buffer;
//读取缓冲区数据
buffer = socket->readAll();
}
5)断开与服务器的连接(关于close()和disconnectFromHost()的区别,可以按F1看帮助)
socket->disconnectFromHost();
socket->close();
2、客户端Client示例
.pro文件添加:
QT +=network
myWidget.h 添加:
//#include <QtNetwork>
#include <QTcpSocket>
#include <QMessageBox>
namespace Ui {
class myWidget;
}
class myWidget : public QWidget
{
Q_OBJECT
public:
explicit myWidget(QWidget *parent = 0);
~myWidget();
private slots:
void on_pushButton_connect_clicked(); // 连接按钮
void socket_Read_Data(); // 数据流读取
void on_pushButton_send_clicked(); // 发送数据
void socket_Disconnected(); // 连接中断
private:
Ui::myWidget *ui;
QTcpSocket *socket;
QPalette Pal0,Pal1; // 调色板
};
myWidget.cpp 添加:
#include "mywidget.h"
#include "ui_mywidget.h"
myWidget::myWidget(QWidget *parent):QWidget(parent),ui(new Ui::myWidget)
{
ui->setupUi(this);
// 一、创建QTcpSocket套接字对象
socket = new QTcpSocket;
ui->pushButton_send->setEnabled(false);
ui->lineEdit_IP->setText("192.168.1.100");
ui->lineEdit_port->setText("8010");
Pal0 =ui->pushButton_connect->palette();
Pal1.setColor(QPalette::ButtonText,Qt::red); // 只能对按钮文本、窗口文本的动态颜色设置
//连接信号槽
QObject::connect(socket, &QTcpSocket::readyRead, this, &myWidget::socket_Read_Data);
QObject::