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

asp.net网站开发与应用网站页面优化方法

asp.net网站开发与应用,网站页面优化方法,伦教九江网站建设,网站策划的重要性简介 软件开发中,可能经常会用到TCP调试工具。本人使用QT开发了一款TCP调试工具,方便大家使用。本文章主要介绍下,该工具的功能,以及如何在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中 QHash<int, 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 <map>QT_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_H
    
  • networkdebugtools.cpp

  •   #include "networkdebugtools.h"#include "ui_networkdebugtools.h"#include <QMessageBox>#include <QHostInfo>#include <QTableWidgetItem>NetworkDebugTools::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();QHash<int, 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:QHash<int, TcpSocketTools*> *tcpClient;// 该对象中保存套接字};#endif // TCPSERVERTOOLS_H
    
  • tcpservertools.cpp

  •   #include "tcpservertools.h"TcpServerTools::TcpServerTools(QTcpServer *parent) : QTcpServer(parent){tcpClient = new  QHash<int, TcpSocketTools*>;}TcpServerTools::~TcpServerTools(){}bool TcpServerTools::startListen() {//监听连接this->listen(QHostAddress(mIp), mPort.toInt());return true;}void TcpServerTools::closeConnect(){// 断开连接时,删除tcpClient中保存的套接字,并清除 tcpClientQHash<int, 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到 QHash<int, TcpSocketTools*> 类型的tcpClient指针对象中tcpClient->insert(socketDescriptor, socketTools);}// 设置最大连接数void TcpServerTools::setMaxPendingConnections(int numConnections) {QTcpServer::setMaxPendingConnections(numConnections);}
    
  • tcpsockettools.h

  •   #ifndef TCPSOCKETTOOLS_H#define TCPSOCKETTOOLS_H#include <QTcpSocket>class TcpSocketTools : public QTcpSocket{Q_OBJECTpublic:explicit TcpSocketTools(qintptr socketDescriptor, QTcpSocket *parent = 0);~TcpSocketTools();public slots :void onReadyRead();void onDisconnected();private:qintptr socketID;};#endif // TCPSOCKETTOOLS_H
    
  • tcpsockettools.cpp

  •   #include "tcpsockettools.h"#include <QHostAddress>TcpSocketTools::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.dinnco.com/news/22940.html

相关文章:

  • 网页界面设计一般使用的分辨率百度地图关键词排名优化
  • 怎样自己做电影网站b站是哪个网站
  • 做中文网站的公司西部数码域名注册官网
  • 新公司董事长致辞做网站南宁seo网站排名优化公司
  • 上海网络建站模板线上网络推广怎么做
  • 做区位分析的地图网站黑帽seo排名
  • 电商类网站有几个主流程seo搜索引擎
  • 做网站的分辨率百度推广网站平台
  • 网上怎么做网站赚钱12345浏览器网址大全
  • 珠海商城网站建设网站做优化好还是推广好
  • wordpress怎么卸载甘肃seo网站
  • 做移动网站快速排盘古百度推广靠谱吗
  • 洛阳网站建设优化凡科建站网站
  • 做网站需要硬件软件seo搜索引擎优化价格
  • 做我女朋友恶搞网站外链seo
  • 个人网站可以做论坛吗网络营销总结
  • 贺州网站seo石嘴山网站seo
  • 大众点评网站团购怎么做青岛seo软件
  • 福州做公司网站厦门人才网招聘官网
  • 一个网站绑定多个域名 卖域名网络推广都有哪些方式
  • 北京网站建设培训优化关键词的方法包括
  • 有心学做网站百度提交网站的入口地址
  • 阿里云 iis 多个网站怎么做盲盒
  • 学生怎么制作网站南宁seo全网营销
  • 网站推广建设加盟seo优化推广技巧
  • 环球资源外贸网中文版seo网站关键词优化价格
  • 漯河哪个网站推广效果好百度推广官网入口
  • 山西省政府网站建设的公司seo排名规则
  • 网站制作的动画怎么做的天津关键词排名提升
  • 制作网站软件作品广州网站设计