当前位置: 首页 > wzjs >正文

嘟嘟浏览器灰色词seo排名

嘟嘟浏览器,灰色词seo排名,手机wap浏览器,有哪些做买家秀的网站TCP 通信流程服务器客户端 TCP 在 Qt 中,QTcpServer 和 QTcpSocket 是用于实现 TCP 网络通信的核心类。QTcpServer 用于创建 TCP 服务器,监听客户端的连接请求;QTcpSocket 用于实现客户端和服务器之间的数据传输。 通信流程 服务器 创建套…
  • TCP
    • 通信流程
    • 服务器
    • 客户端

TCP

在 Qt 中,QTcpServer 和 QTcpSocket 是用于实现 TCP 网络通信的核心类。QTcpServer 用于创建 TCP 服务器,监听客户端的连接请求;QTcpSocket 用于实现客户端和服务器之间的数据传输。

通信流程

服务器

  1. 创建套接字服务器QTcpServer对象
  2. 通过QTcpServer对象设置监听,即:QTcpServer::listen()
  3. 基于QTcpServer::newConnection()信号检测是否有新的客户端连接
  4. 如果有新的客户端连接调用QTcpSocket *QTcpServer::nextPendingConnection()得到通信的套接字对象
  5. 使用通信的套接字对象QTcpSocket和客户端进行通信
#include "mainwindow.h"#include "ui_mainwindow.h"#include<QMessageBox>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){ui->setupUi(this);tcpserver = new QTcpServer(this);}MainWindow::~MainWindow(){delete ui;}void MainWindow::on_openBt_clicked(){quint16 port = ui->portEdit->text().toUInt();  // 获取端口号if (port == 0 || port > 65535) {QMessageBox::warning(this, "错误", "端口号无效!");return;}if (!tcpserver->listen(QHostAddress::Any, port)) {QMessageBox::warning(this, "错误", "服务器启动失败!");return;}QMessageBox::information(this, "成功", "服务器已启动!");connect(tcpserver, &QTcpServer::newConnection, this, [=]() {QTcpSocket *socket = tcpserver->nextPendingConnection();clientSockets.append(socket);  // 将新客户端 socket 加入列表// 处理客户端数据connect(socket, &QTcpSocket::readyRead, this, [=]() {QByteArray data = socket->readAll();ui->recvEdit->appendPlainText("客户端 say:" + data);});// 处理客户端断开连接connect(socket, &QTcpSocket::disconnected, this, [=]() {clientSockets.removeOne(socket);  // 从列表中移除socket->deleteLater();  // 释放资源});});}void MainWindow::on_sendBt_clicked(){// 获取输入框中的文本QString str = ui->sendEdit->text();  // 假设 sendEdit 是 QLineEditif (str.isEmpty()) {QMessageBox::warning(this, "错误", "发送内容不能为空!");return;}// 将 QString 转换为 QByteArrayQByteArray data = str.toUtf8();// 遍历所有客户端 socket,发送数据for (QTcpSocket *socket : clientSockets) {if (socket->state() == QAbstractSocket::ConnectedState) {// 是用于检查 QTcpSocket 是否处于连接状态的条件。socket->write(data);  // 发送数据}}// 清空输入框ui->sendEdit->clear();}void MainWindow::on_closeBt_clicked(){// 关闭服务器,停止监听tcpserver->close();// 断开所有客户端连接for (QTcpSocket *socket : clientSockets) {if (socket->state() == QAbstractSocket::ConnectedState) {socket->disconnectFromHost();  // 断开连接}socket->deleteLater();  // 释放资源}// 清空客户端列表clientSockets.clear();// 更新 UI 状态QMessageBox::information(this, "成功", "服务器已关闭!");ui->recvEdit->appendPlainText("服务器已关闭!");}

头文件

#include <QTcpServer>#include <QTcpSocket>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private slots:void on_openBt_clicked();void on_sendBt_clicked();void on_closeBt_clicked();private:Ui::MainWindow *ui;QTcpServer *tcpserver;QList<QTcpSocket*> clientSockets;  // 保存所有客户端连接的 socket 列表};

客户端

  1. 创建通信的套接字类QTcpSocket对象
  2. 使用服务器端绑定的IP和端口连接服务器QAbstractSocket::connectToHost()
  3. 使用QTcpSocket对象和服务器进行通信
#include "ui_mainwindow.h"#include<QMessageBox>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){ui->setupUi(this);tcpsocket = new QTcpSocket(this);// 连接 socket 的信号和槽connect(tcpsocket, &QTcpSocket::connected, this, [=]() {QMessageBox::information(this, "成功", "已连接到服务器!");ui->recvEdit->appendPlainText("已连接到服务器!");});connect(tcpsocket, &QTcpSocket::disconnected, this, [=]() {QMessageBox::information(this, "提示", "已断开与服务器的连接!");ui->recvEdit->appendPlainText("已断开与服务器的连接!");});connect(tcpsocket, &QTcpSocket::readyRead, this, [=]() {QByteArray data = tcpsocket->readAll();ui->recvEdit->appendPlainText("服务器 say: " + QString::fromUtf8(data));});}MainWindow::~MainWindow(){delete ui;}void MainWindow::on_connect_clicked(){// 获取服务器地址和端口号QString address = ui->IPEdit->text();quint16 port = ui->portEdit->text().toUInt();if (address.isEmpty() || port == 0) {QMessageBox::warning(this, "错误", "服务器地址或端口号无效!");return;}// 连接到服务器tcpsocket->connectToHost(address, port);// 检查连接状态if (!tcpsocket->waitForConnected(1000)) {QMessageBox::warning(this, "错误", "连接服务器超时!");}}void MainWindow::on_disconnect_clicked(){// 断开与服务器的连接if (tcpsocket->state() == QAbstractSocket::ConnectedState) {tcpsocket->disconnectFromHost();}}void MainWindow::on_sendBt_clicked(){// 获取输入框中的文本QString str = ui->sendEdit->text();  // 假设 sendEdit 是 QLineEditif (str.isEmpty()) {QMessageBox::warning(this, "错误", "发送内容不能为空!");return;}// 将 QString 转换为 QByteArrayQByteArray data = str.toUtf8();// 发送数据if (tcpsocket->state() == QAbstractSocket::ConnectedState) {tcpsocket->write(data);} else {QMessageBox::warning(this, "错误", "未连接到服务器!");}// 清空输入框ui->sendEdit->clear();}

头文件

#include <QTcpSocket>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private slots:void on_sendBt_clicked();void on_connect_clicked();void on_disconnect_clicked();private:Ui::MainWindow *ui;QTcpSocket* tcpsocket;  // 保存所有客户端连接的 socket 列表};

 

作者: 苏丙榅
链接: 基于TCP的Qt网络通信 | 爱编程的大丙
来源: 爱编程的大丙
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

http://www.dtcms.com/wzjs/24892.html

相关文章:

  • 做自己的网站难不难全网营销平台
  • 南川集团网站建设河南网站定制
  • 最好的开发网站建设百度天眼查公司
  • 专门搜索知乎内容的搜索引擎山东seo网页优化外包
  • 个人网站可以做导购吗中国十大网站有哪些
  • 苏州做企业网站有哪些百度云登陆首页
  • 外贸网站建设升上去在哪个网站可以免费做广告
  • 奉节做网站安徽seo推广公司
  • 弘泽建设集团网站电商网站策划
  • 北海做网站有哪家好标题优化怎么做
  • 宁波公司建网站哪家好软文世界
  • 在线做网站教程全部列表支持安卓浏览器软件下载
  • 一级域名网站如何申请什么是百度竞价排名服务
  • 用模板做企业网站推广文章的推广渠道
  • 电子商务网站建设含义推广下载app赚钱
  • 如何建立搜索功能的网站策划方案
  • 和网站合作有哪些活动可以做seo综合优化公司
  • 本人找做钢筋笼的活网站友情链接交换统计表
  • 网站建设有限公电商详情页模板免费下载
  • 小城天长网站建设百度 seo 工具
  • 网站建设阐述北京网络推广
  • 支付网站建设费账务处理百度竞价代运营外包
  • 做btob上哪个网站好青岛百度关键词优化
  • 支付网站怎么做手机百度搜索app
  • 品牌建设的最高境界是培育客户成为郑州怎么优化网站排名靠前
  • 阿里虚拟机建设网站百度账号出售平台
  • 打渔网站建设企业培训机构排名
  • wp如何做引擎网站汕头百度网站排名
  • 制作网站需要学什么软件有哪些seo指的是搜索引擎营销
  • 电子商务网站建设 李洪心网站权重怎么提高