手把手带你做一个自己的网络调试助手(1) - TCP服务器准备

C# 简易TCP网口调试助手(二) 服务端Server TCP客户端实现效果如下;1、可以监听多个客户端,和限制客户端的连接。2、接收和转发5000行大数据量,快速且无错误。3、可以设置心跳功能,客户端在指定时间内一直不发送数据,会被自动断开。 阅读详情

程序设计流程图

TCP 服务器

ui界面搭建

Tcp服务器建立连接 - listen() + connect()

1.在构造函数中进行如下初始化:

通过 QNetworkInterface 类的  allAddresses 这一API 获得可用IP地址(包括IPv4 和 IPv6)

然后通过QHostAddress类的  protocol 这一API 进行筛选,只读取IPv4的数据

(QAbstractSocket::IPv4Protocol)

    server = new QTcpServer(this); // 初始化TcpServer对象

    //当有新的客户端接入时候建立连接:
    connect(server,SIGNAL(newConnection()),this,SLOT(on_NewClient_Connect()));
    // 设置控件状态 -> 没连接前不能断开连接
    ui->btnStopListen->setEnabled(false);
    ui->btnDisconnect->setEnabled(false);

    //  获取本机可用的ip
    //QList<QHostAddress> QNetworkInterface::allAddresses()
    QList<QHostAddress> addrs =QNetworkInterface::allAddresses();
    for(QHostAddress tmp:addrs){
     if(tmp.protocol() == QAbstractSocket::IPv4Protocol)  // 协议是IPV4协议才读取
        ui->comboBoxAddr->addItem(tmp.toString()); // 把读取到的ip地址添加到comboBox的框中
    }

 2.处理新的连接的槽函数

//处理新连接槽函数
void Widget::on_NewClient_Connect()
{
    //qDebug()<<"new Cline In";
    if(server->hasPendingConnections()){ //有新的连接接入
    QTcpSocket *connect = server->nextPendingConnection();//获取新的连接的信息
    qDebug()<<"Client Addr:"<<connect->peerAddress().toString()<<" host:"<<connect->peerPort();
    ui->textEditRev->insertPlainText("客户端地址:"+connect->peerAddress().toString()+
                                     "\n端口号:"+QString::number(connect->peerPort()));
    }

}

3.监听按钮槽函数

//监听按键槽函数
void Widget::on_btnListen_clicked()
{

    //QHostAddress addr("10.171.24.231"); // 构造合适类型的ip地址 -- 固定IP
    int port = ui->lineEditPort->text().toInt();
    //if(!server->listen(QHostAddress::Any,port)){ //Any -- 监听任意
     if(!server->listen(QHostAddress(ui->comboBoxAddr->currentText()),port)){ //根据combboBox选择的ip地址监听,QHostAddress(QString) -- 构造出合适对象
      qDebug()<<"listen error";
      return;
    }
      qDebug()<<"listen success";
    //监听成功,设置控件状态
    ui->btnListen->setEnabled(false);
    ui->btnStopListen->setEnabled(true);
    ui->btnDisconnect->setEnabled(true);

}

效果演示:

通过下图可以发现,我们已经成功建立连接并且获得了正确的IP地址和端口号

添加串口被占用弹窗提示

添加代码到监听槽函数

//监听按键槽函数
void Widget::on_btnListen_clicked()
{

    //QHostAddress addr("10.171.24.231"); // 构造合适类型的ip地址 -- 固定IP
    int port = ui->lineEditPort->text().toInt();
    //if(!server->listen(QHostAddress::Any,port)){ //Any -- 监听任意
     if(!server->listen(QHostAddress(ui->comboBoxAddr->currentText()),port)){ //根据combboBox选择的ip地址监听,QHostAddress(QString) -- 构造出合适对象
      qDebug()<<"listen error";
      QMessageBox msgBox;
      msgBox.setWindowTitle("监听失败");
      msgBox.setText("端口号被占用");
      msgBox.exec();
      return;
    }
      qDebug()<<"listen success";
    //监听成功,设置控件状态
    ui->btnListen->setEnabled(false);
    ui->btnStopListen->setEnabled(true);
    ui->btnDisconnect->setEnabled(true);

}

效果演示

Tcp服务器接收

添加信号与槽

在处理新连接槽函数中,添加读取消息的信号与槽

    //建立信号与槽来读取内容:
    connect(connection,SIGNAL(readyRead()),this,SLOT(on_readyRead_hanler()));

实现接收槽函数

//  读取数据的信号处理函数
void Widget::on_readyRead_hanler()
{
    //使用sender() --来获得信号额发出者 -- 局部变量
    QTcpSocket *tmpSock = qobject_cast<QTcpSocket *>(sender());
    QByteArray revData = tmpSock->readAll();
    ui->textEditRev->insertPlainText("客户端: "+revData);
}

效果演示

客户端断开检测

实现方法一 - disconnected

在建立新连接那建立信号连接

connect(connection,SIGNAL(disconnected()),this,SLOT(mdisconnected()));

实现断开检测槽函数

// 断开连接检测
void Widget::mdisconnected()
{
     QTcpSocket *tmpSock = qobject_cast<QTcpSocket *>(sender());
    //qDebug()<<"client  out!";
    ui->textEditRev->insertPlainText("客户端断开!");
    tmpSock->deleteLater(); //资源回收
}

方法二 - statechanged

同上建立信号连接

   connect(connection,SIGNAL(stateChanged(QAbstractSocket::SocketState)),
            this,SLOT(mstateChanged(QAbstractSocket::SocketState)));

实现断开检测槽函数

void Widget::mstateChanged(QAbstractSocket::SocketState socketState)
{
  qDebug()<<"client  out In state"<<socketState;
  switch (socketState) {
   case QAbstractSocket::UnconnectedState:
   //case QAbstractSocket::ClosingState:
       ui->textEditRev->insertPlainText("客户端断开!");
      break;


  }

实现效果:

QT——TCP网络调试助手 QT——网络调试助手 阅读详情

相关推荐

C# 简易TCP网口调试助手(一) 客户端Client

最近的上位机开发工作中开始频繁涉及到网口、串口的通讯,网上找了各种资料和帖子都没怎么找到好用的开源代码或者工具。目前找到几个好一点的方式来实现的网口和串口通讯工具包,先写个好用的TCP的negut包记录下来,将使用的步骤写下来做个记录。本博客主要用来记录自己学到的东西,用于以后回来查看和使用。也会标注来源,各位若是对某项内容感兴趣,可去来源处更加细致的学习实现效果如下,右侧为制作的测试程序:能够收发数据,检测连接状态。

WangMing_X的博客 5958

TCP调试工具使用说明

通用的TCP工具,绿色免安装,简单易用,

xiaoxiangfei的专栏 1万+

通过AT指令实现ESP8266模块和TCP服务器的数据传输

通过 AT 指令实现 ESP8266 模块和 TCP服务器的数据传输 一,总体介绍: 这篇博文主要讲解如何通过串口调试工具发送AT指令给esp8266-01,实现8266和服务器通讯。这里使用网络调试助手模拟出来一个TCP服务器,然后与WiFi模块相互通讯。由于演示的是局...

IT之旅 的博客 2万+

TCP调试助手

TCP/IP调试助手是用于在TCP/UDP的应用层上进行通信连接、数据传输的Windows工具。所谓应用层上就是说,TCP调试工具是不涉及TCP/IP协议层实现的问题,而只是利用TCP/IP进行数据传输。从另外一个角度讲,它是将BSD socket的接口的每个函数都让用户可以通过界面进行独立的调用。比如用于TCP连接的connect,变为“连接”按钮;比如发送数据的send函数变为“发送”按钮。以下列出了互联网上流行的几种TCP调试工具。 卓岚TCP UDP调试助手 下载:SocketDlgTest

键盘的起始页 1万+

esp8266局域网内的TCP通信实验

本文以esp8266作为STA,以手机WIFI作为AP,电脑端用网络调试助手与esp8266共同连接至手机WIFI并建立TCP连接,操作步骤与我在另一篇博文提到的一致。 下面分别以“esp8266作为TCP客户端”和“esp8266作为TCP服务器”两种情况进行实验示范: 准备工具: USB转TTL、 esp8266模块、 串口调试助手、 网络调试助手、 一、esp8266作为TCP客户端 1...

how的博客 5624

ESP32与手机网络调试助手实现高效TCP通信的实战指南

本文提供了一份详尽的实战指南,指导开发者如何利用ESP32与手机网络调试助手建立高效的TCP通信。文章从软硬件准备、Wi-Fi连接配置、核心代码实现到联合调试,逐步解析了数据收发的完整流程,并分享了提升稳定性的进阶技巧与常见问题排查方法,是物联网原型开发的实用参考。

weixin_29158413的博客 486

ESP8266模组作为客户端连接到网络调试助手服务器

本文将展示如何以WiFi作为联网方式,ESP8266WiFi模组作为客户端,网络调试助手作为TCP服务器,以TCP协议为基础,使用AT指令连接到网络调试助手。

qq_48373597的博客 9730

ESP32 TCP服务器实战:用Socket Tool和网络调试助手测试多客户端通信

本文详细介绍了如何使用ESP32搭建TCP服务器,并通过Socket Tool和网络调试助手进行多客户端通信测试。内容涵盖测试环境搭建、单客户端验证、多客户端并发测试及异常处理,帮助开发者优化ESP32 TCP服务器的性能和稳定性,适用于物联网和嵌入式系统开发。

weixin_30687051的博客 506

TCP调试必备:NetAssist网络调试助手!

「NetAssist网络调试助手」由南京云想物联网科技开发,自2001年发布以来,凭借支持多协议(TCP/UDP/MQTT)、跨系统兼容、绿色便携及强大功能(如自动校验、批量发送、日志记录等),成为电气、嵌入式、上位机及网络工程师必备工具。适用于设备参数设置、通信调试、协议验证与HTTP/Modbus接口测试,广泛应用于工控、物联网及软件开发场景。

dotNet全栈开发 6234

TCP网络调试助手v2.1实战工具详解

TCP看似古老,但它所蕴含的设计哲学至今仍在影响新一代协议。它的每一次握手、每一个窗口调整、每一条重传策略,都在告诉我们:可靠性不是偶然,而是无数细节堆砌的结果。无论是写一个微服务,还是调试一个嵌入式设备,理解TCP都能让你看得更深一层。下次再遇到连接问题时,不妨问问自己:- 是不是SYN被防火墙拦了?- 全连接队列满了吗?- 客户端端口耗尽了吗?- 还是应用层没及时调用read/write?这些问题的答案,都在今天的分享里。

weixin_35755823的博客 447

基于TCP网络调试助手的通信实现与调试实战

简介:TCP是互联网中可靠的传输层协议,广泛应用于客户端与服务器之间的稳定数据传输。本文围绕“TCP网络调试助手实现TCP通信”展开,系统介绍TCP连接的三次握手与四次挥手、滑动窗口、序列号与确认应答、流量控制、拥塞控制等核心机制,并重点解析TCP粘包与拆包问题及其实用解决方案。通过集成网络调试助手工具,开发者可借助可视化界面监控连接状态、收发数据与网络延迟,提升调试效率。文章还详细说明了使用主流编程语言实现TCP通信的关键步骤,帮助开发者掌握实际开发中的调试技巧与应用方法。

weixin_35732273的博客 358

用网络调试助手玩转ESP8266:TCP通信配置与局域网控制实战

本文详细介绍了如何利用网络调试助手和串口调试助手配置ESP8266的TCP通信,包括STA模式接入路由器和AP模式创建热点。通过AT命令实现局域网控制,涵盖硬件连接、软件配置及常见问题排查,为物联网开发者提供实用指南。

x1y2z的博客 874

网络调试助手(netassist5.0.2)

网络调试助手(netassist5.0.2)

ESP8266与网络调试助手通讯

本文将展示如何以WiFi作为联网方式,ESP8266WiFi模组作为客户端,网络调试助手作为TCP服务器,以TCP协议为基础,使用AT指令连接到网络调试助手。 一、前期准备 1、硬件准备: (1)小熊派开发板(芯片为STM32L431RCT6) 注意:右上方的开关要拨到AT PC,以示模组直接与PC相连接。 (2) ESP8266通信模块 2、软件准备: (1)QCOM串口助手(其它串口助手皆可) (2)网络调试助手(其它网络调试助手皆可) 二、具体流程 1、测试AT指令,调试模...

sinat_26528193的专栏 3806

Win11移动热点连接故障排查:从IP配置失败到网络共享的全面解决指南

本文提供了Win11移动热点连接故障的全面排查指南,重点解决手机连接时卡在“获取IP地址”或提示“IP配置失败”的问题。文章从基础检查(如确认网络连接、选择正确共享源)入手,深入讲解了核心的网络适配器共享设置、关键系统服务检查、防火墙配置以及终极解决方案——网络重置。通过系统性的步骤,帮助用户彻底修复Win11移动热点无法共享网络的问题。

alice7model的博客 788

ICG cell如何通过Latch结构消除与门clock gating中的glitch?

本文深入解析了ICG Cell如何利用Latch结构解决传统与门时钟门控中的毛刺问题。通过将电平敏感锁存器与门控与门结合,ICG Cell将使能信号的变化严格限制在时钟低电平的安全窗口内采样和锁存,从而在时钟有效沿期间提供稳定的控制信号,从根本上消除了因信号延迟不同步而产生的glitch,确保了门控时钟的纯净与电路功能的可靠性。

weixin_29234423的博客 468

【C++ QT】纯手搓制作一个QT网络调试助手-服务端版本,万字解析

本文介绍了一个基于Qt开发的TCP网络调试助手项目。项目通过QTcpServer和QTcpSocket类实现TCP通信,包含服务端和客户端功能模块。服务端核心功能包括端口监听、连接管理、数据收发处理和状态监控;客户端实现连接建立、数据发送接收等功能。文章详细讲解了TCP三次握手/四次挥手机制,分析了Qt网络编程关键流程,并提供了服务端和客户端的核心代码实现。该项目结合Qt信号槽机制,实现了网络通信的异步事件处理,同时包含GUI界面开发元素如文本颜色控制等功能,适合作为网络编程学习和实践的参考案例。

C++,Java,Python,C#编程选手,偶尔刷刷leetcode 1128

cdh zookeeper未授权访问(安全漏洞)处理

前言: 最近公司在做安全漏洞扫描。发现cdh zookeeper存在未授权访问的问题。 ZooKeeper的节点有5种操作权限: CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写) 注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限 ZooKeeper的身份的认证有4种方式: world:默认方式,相当于全世界都能访问 auth:代表已经认证通过的..

belialxing的专栏 2446

C++QT网络调试助手开发全攻略,万字解析

本文介绍了使用Qt框架开发TCP网络调试助手的过程。项目分为服务端和客户端两部分,使用QTcpServer和QTcpSocket类实现网络通信功能。主要内容包括:1. TCP基础概念和协议特性;2. 服务端开发流程,包括监听端口、处理新连接、数据收发等核心功能实现;3. 客户端开发流程,包括连接服务器、数据交互等功能实现;4. UI界面设计,重点介绍了TextEdit控件的数据显示和颜色控制。项目通过信号与槽机制实现了异步网络通信,完整展示了TCP网络应用的开发过程,可作为网络编程的实践参考。

C++,Java,Python,C#编程选手,偶尔刷刷leetcode 1164

【maxENT】从数据到地图:R语言实现最大熵物种分布建模全流程解析

本文详细解析了如何使用R语言实现最大熵模型(MaxEnt)进行物种分布建模的全流程。从数据准备、环境变量处理到模型训练与参数调优,再到模型评估与结果可视化,提供了实用的代码示例和避坑指南。特别适合生态学研究者利用最大熵模型处理物种分布数据,提升研究效率。

weixin_27244795的博客 216

手把手教你离线部署Jupyter Notebook及高效插件配置

本文详细介绍了如何在离线环境中部署Jupyter Notebook及配置高效插件,包括离线安装步骤、依赖管理、核心扩展安装及常见问题排查。特别针对金融、科研等封闭网络场景,提供完整的whls包和requirements.txt解决方案,帮助开发者和数据分析师突破网络限制,提升工作效率。

weixin_28839549的博客 583

【QT】手把手制作一个QT网络调试助手(准备阶段)

1. 新建一个工程 打开QT Creator4.11.1 新建一个工程名NetTools 2. mainwindow.ui设计 2.1 对窗口主体进行栅格化布局 2.2 添加网络通信配置GroupBox 2.2.1 填充内容 2.2.1.1 网络通信配置 首先添加GroupBox——网络通信配置——gpbNetConfig, 然后添加Grid Layout; 最后添加功能模块,最终效果如下: 2.2.1.2 接收控制 首先在gpbRxCtrl...

Roger_717的博客 5686

PCL 读取和保存点云

PCL (Point Cloud Library) 是一个用于处理 3D 点云数据的开源库。在处理点云数据时,常见的任务包括点云的读写和可视化。PCL 提供了强大的 IO 模块来读取和写入各种格式的点云文件,并且提供了可视化模块来对点云进行渲染和显示。点云的读写与显示是很多 3D 数据处理任务的基础步骤,通过这些步骤,可以对点云进行预处理、分析和操作。

纵马踏花向自由 1739

网络调试助手——局域网广播消息——模拟HTTP服务器

网络调试助手——局域网广播消息——模拟HTTP服务器 前言:作为一名嵌入式开发者,不能熟练使用网络调试助手,我羞愧至极,赶紧弄明白记录下来才是正事 怎么使用网络调试助手向局域网广播消息 注释:向局域网广播消息时,必须要处于同一个网段中,比如需要收到广播消息的设备ip:192.168.1.103,则设置网络调试工具也要在192.168.1.xx(也就是电脑本身的ip地址)下面才可以。 怎么模拟http的服务器 注释:设备向服务器发起get和post,在此我们使用网络调试工具需要开启一个tcp服务器

会选科技的博客 5190

一文整理深度学习【深度学习linux的docker+pytorch+cuda+nvidia-docker+vscode配置】

docker+pytorch+cuda+nvidia-docker+vscode

Edward的博客 1335

Ubuntu搭建Pytorch环境(Anaconda、Cuda、cuDNN、Pytorch、Python、Pycharm、Jupyter)

Ubuntu搭建Pytorch环境(Anconda、Cuda、Pytorch、Python、Pycharm、Jupyter)

funfan的博客 1万+
上一篇: 从零开始实现自己的串口调试助手(10) - 优化 收尾 + 打包
下一篇: 手把手带你做一个自己的网络调试助手(2) - TCP服务器完善
mx_jun
博客等级 码龄5年 1605粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值