一、TCP协议基础知识
1、传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议
2、TCP拥塞控制字算法(也称AIMD算法)。该算法主要包括四个主要部分:慢启动、阻塞避免、快速重传和快速恢复
3、TCP通信必须建立TCP连接(客户端和服务端),Qt提供QTcpSocket类和QTcpServer类专门用于建立TCP通信程序,服务器用QTcpServer监听端口及建立服务器;QTcpSocket用于建立连接后使用套接字(socket)进行通信。
4、QtcpServer是从QOjbect继承的类用于服务器连接网络监听,创建网络socket连接。QTcpServer主要接口如下:
QAbstractSocket 是Qt库中的一个类,它提供了网络套接字的基本功能。QAbstractSocket是所有特定类型套接字如(QTcpSocket或QUdoSocket)类
QAbstractSocket 类提供了如一些功能:
1、连接与断开连接:可以连接到远程主机,也可以断开连接
2、等待套接字就绪:可以等待套接字准备好进行读写操作,或者在套接字准备好时接受通知
3、读取和写入数据:可以从套接字读取数据,也可以向套接字写入数据
4、设置套接字选项:可以涉资套接字选项,如TCP连接超时
5、获取套接字信息:可以获取套接字的信息,如主机名、端口号、套接字类型等、
服务端代码:
下方红色方框需要添加,不然添加头文件的时候会出现错误,无法找到。
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTcpServer> // 专门用于建立TCP连接并传输数据信息
#include <QtNetwork> //此模块提供开发TCP/IP客户端和服务器的类
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_pushButton_startServer_clicked();
void on_pushButton_stopServer_clicked();
void on_pushButton_sendinfo_clicked();
void clientconnect();
void clientdisconnect();
void socketreaddata();
void newconnection();
private:
Ui::MainWindow *ui;
private:
QString Get