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

手机网站一般多宽网站怎么吸引流量

手机网站一般多宽,网站怎么吸引流量,dedecms做模板网站,网易企业邮箱登录v简介 软件开发中#xff0c;可能经常会用到TCP调试工具。本人使用QT开发了一款TCP调试工具#xff0c;方便大家使用。本文章主要介绍下#xff0c;该工具的功能#xff0c;以及如何在Qt中实现TCP服务器的并发。 界面展示 安装界面 桌面图标。安装后会生成桌面图标#…简介 软件开发中可能经常会用到TCP调试工具。本人使用QT开发了一款TCP调试工具方便大家使用。本文章主要介绍下该工具的功能以及如何在Qt中实现TCP服务器的并发。 界面展示 安装界面 桌面图标。安装后会生成桌面图标双击图标可以打开程序。 界面展示 功能说明 本程序使用Qt实现了TCP客户端和服务端服务端并发数默认为100可配置。客户端连接后可以在服务端看到连接的客户端信息服务端可以指定给某一个客户端发送消息。服务端不支持广播后续版本会完善。 软件下载 本程序已经制作成安装包形式下载安装后可直接使用。gitee下载CSDN资源下载 Qt实现服务端并发 Qt实现服务端多并发时可以实现一个类 TcpServerTools该类需要继承于 QTcpServer然后重写以下两个函数void setMaxPendingConnections(int numConnections) 该函数设置服务端最大连接数 void incomingConnection(qintptr socketDescriptor); 当有新连接时会触发该函数我们需要在该函数中将套接字保存起来。可以将套接字保存到一个Hash中 QHashint, TcpSocketTools* 核心源代码 这里只提供了服务端实现并发的核心源代码主要有三个文件 networkdebugtools.cpp 为主界面文件实现UI交互。tcpservertools.cpp 主要实现接受客户端连接请求保存套接字到hash容器中。tcpsockettools.cpp 中主要实现处理客户端数据和断开请求。 三者之间可以自己定义信号槽实现通信整体源代码不提供请谅解。 networkdebugtools.h #ifndef NETWORKDEBUGTOOLS_H#define NETWORKDEBUGTOOLS_H#include QWidget#include QEvent#include QMouseEvent#include QMenu#include tcpservertools.h#include mapQT_BEGIN_NAMESPACEnamespace Ui { class NetworkDebugTools; }QT_END_NAMESPACEclass NetworkDebugTools : public QWidget{Q_OBJECTpublic:NetworkDebugTools(QWidget *parent nullptr);~NetworkDebugTools();private slots:void on_pushButton_send_clicked();void on_pushButton_listen_clicked();private:Ui::NetworkDebugTools *ui;TcpServerTools *mTcpServerTools;};#endif // NETWORKDEBUGTOOLS_Hnetworkdebugtools.cpp #include networkdebugtools.h#include ui_networkdebugtools.h#include QMessageBox#include QHostInfo#include QTableWidgetItemNetworkDebugTools::NetworkDebugTools(QWidget *parent): QWidget(parent), ui(new Ui::NetworkDebugTools){ui-setupUi(this);mTcpServerTools new TcpServerTools();}void NetworkDebugTools::on_pushButton_send_clicked(){//获取当前选中的客户端信息QString curAddr ui-tableWidget_clientInfo-item(curRow, 0)-text();QHashint, TcpSocketTools*::iterator iter mTcpServerTools-tcpClient-begin();for (; iter ! mTcpServerTools-tcpClient-end(); iter) {QString iterAddr iter.value()-peerAddress().toString() : QString::number(iter.value()-peerPort());if (iterAddr.compare(curAddr) 0) {//这里hash容器tcpClient中保存的value就是socket可以直接通过socket给客户端发送数据//同样可以通过该socket获取客户端的ip和端口然后与我们点击的客户端信息比对就可以实现对指定客户端发送消息iter.value()-write(ui-plainTextEdit_send-toPlainText().toLocal8Bit());break;}}}void NetworkDebugTools::on_pushButton_listen_clicked(){if (ui-pushButton_listen-text().compare(监听) 0) {ui-pushButton_listen-setText(关闭);mTcpServerTools-setMaxPendingConnections(mConfigTools-getConnCount());mTcpServerTools-startListen();}else {ui-pushButton_listen-setText(监听);mTcpServerTools-closeConnect();}}tcpservertools.h #ifndef TCPSERVERTOOLS_H#define TCPSERVERTOOLS_H#include QWidget#include QTcpServer#include QHostInfo#include QAbstractSocket#include QTcpSocket#include tcpsockettools.h#define THREAD_MAX 20class TcpServerTools : public QTcpServer{Q_OBJECTpublic:explicit TcpServerTools(QTcpServer *parent 0);~TcpServerTools();//开始监听bool startListen();//关闭连接void closeConnect();//设置最大连接数void setMaxPendingConnections(int numConnections);protected:// 有新连接到来时该函数会被触发void incomingConnection(qintptr socketDescriptor);private:QTcpServer *mTcpServer; //tcp服务对象public:QHashint, TcpSocketTools* *tcpClient;// 该对象中保存套接字};#endif // TCPSERVERTOOLS_Htcpservertools.cpp #include tcpservertools.hTcpServerTools::TcpServerTools(QTcpServer *parent) : QTcpServer(parent){tcpClient new QHashint, TcpSocketTools*;}TcpServerTools::~TcpServerTools(){}bool TcpServerTools::startListen() {//监听连接this-listen(QHostAddress(mIp), mPort.toInt());return true;}void TcpServerTools::closeConnect(){// 断开连接时删除tcpClient中保存的套接字并清除 tcpClientQHashint, TcpSocketTools*::const_iterator iterC tcpClient-constBegin();for (; iterC ! tcpClient-constEnd(); iterC){iterC.value()-deleteLater();}tcpClient-clear();this-close();}void TcpServerTools::incomingConnection(qintptr socketDescriptor) {//创建 TcpSocketTools 对象TcpSocketTools *socketTools new TcpSocketTools(socketDescriptor); QString connAddr socketTools-peerAddress().toString() : QString::number(socketTools-peerPort());// 有新连接时保存socket到 QHashint, TcpSocketTools* 类型的tcpClient指针对象中tcpClient-insert(socketDescriptor, socketTools);}// 设置最大连接数void TcpServerTools::setMaxPendingConnections(int numConnections) {QTcpServer::setMaxPendingConnections(numConnections);}tcpsockettools.h #ifndef TCPSOCKETTOOLS_H#define TCPSOCKETTOOLS_H#include QTcpSocketclass TcpSocketTools : public QTcpSocket{Q_OBJECTpublic:explicit TcpSocketTools(qintptr socketDescriptor, QTcpSocket *parent 0);~TcpSocketTools();public slots :void onReadyRead();void onDisconnected();private:qintptr socketID;};#endif // TCPSOCKETTOOLS_Htcpsockettools.cpp #include tcpsockettools.h#include QHostAddressTcpSocketTools::TcpSocketTools(qintptr socketDescriptor, QTcpSocket *parent) : QTcpSocket(parent),socketID(socketDescriptor){this-setSocketDescriptor(socketDescriptor);connect(this, TcpSocketTools::readyRead, this, TcpSocketTools::onReadyRead);connect(this, TcpSocketTools::disconnected, this, TcpSocketTools::onDisconnected);}TcpSocketTools::~TcpSocketTools(){}void TcpSocketTools::onReadyRead() {//处理接受到的数据} void TcpSocketTools::onDisconnected() {//处理断开连接请求}
http://www.sczhlp.com/news/197730/

相关文章:

  • C 语言 - 操作文件函数全解析
  • C 语言 - fopen、fprintf、fread、fwrite、fputc 操作文件函数解析
  • 找靠谱图像处理软件?Adobe PS2025 全球设计师都在用
  • 2025 碳晶板厂家最新推荐榜:含木纹 / 白色 / 全屋整装等品类,西南及全国优质厂家权威甄选指南
  • 衡水稳定的网络建站自己创业开网店需要什么
  • dedecms可以做双语网站制作app需要学什么
  • 成都学校网站制作网站建设实训不足
  • 网站培训友链网
  • 网站logo优化建站行业发展趋势
  • 网站建设和维护待遇提升学历一般多少钱
  • 嘉兴中小企业网站制作编程网站排名
  • 巴州建设局网站wordpress修改ftp
  • 做网站的目标网络工程建设流程
  • 帝国网站管理系统前台百度搜国外服务器Wordpress
  • 想推网站目录源码中国建设银行官网站安装k宝
  • wordpress自动优化服务
  • 京网站制作公司网站防恶意注册
  • 上海建设人才网站ps培训班一般学费多少钱
  • 大汉网站开发写作网站原码
  • 电子商务网站建设系统最新室内装修效果图大全
  • 长沙网站seo收费苏州做企业网站公司
  • 建筑人才网站抖抈短视频app下载安装
  • 外语不精通可以做国外网站吗wordpress 小程序框架
  • 大型企业网站源码移动公司需要网络工程专业
  • 用ps做商城网站好做吗重庆速代网络科技
  • wordpress头像旋转手机网站免费优化
  • 在东莞建公司网站软件技术前端开发
  • 制作一份网站建设的简要任务执行书wordpress+主题加速
  • 快速建站phpphp网站平台
  • 服装网站的建设方案计算机专业培训机构排名