手把手带你做一个自己的网络调试助手(2) - TCP服务器完善

工具 | 网络调试助手的简单使用 上一篇分享的:AT指令测试WIFI通信模组并获取天气数据,我们在测试AT+CIPSTART这条指令(连接服务端)时给出了三种方法,其中第三种方法是使用一些网络调试助手模拟TCP服务器。本... 阅读详情


服务器指定客户端发送

自定义控件comboBox - 刷新客户端列表 

目的:

自定义控件,当鼠标点击这个comboBox控件的时候去刷新客户端列表 

mycombobox.h

#ifndef MYCOMBOBOX_H
#define MYCOMBOBOX_H

#include <QComboBox>
#include <QWidget>

class MyComboBox : public QComboBox
{
    Q_OBJECT

public:
    MyComboBox(QWidget* parent);

protected:
void mousePressEvent(QMouseEvent *e) override;

signals:
 void on_ComboBox_clicked();


};

#endif // MYCOMBOBOX_H

mycombobox.c

#include "mycombobox.h"

#include <QMouseEvent>


MyComboBox::MyComboBox(QWidget *parent)
{

}

void MyComboBox::mousePressEvent(QMouseEvent *e)
{
  if(e->button() == Qt::LeftButton){
  emit on_ComboBox_clicked();
  }
  //传递给父类处理
  QComboBox::mousePressEvent(e);
}


信号 与槽

关联信号
    //建立comboBox刷新可用客户端列表的信号与槽
    connect(ui->comboBoxChildren,&MyComboBox::on_ComboBox_clicked,this,&Widget::mComboBox_refresh);

刷新客户端列表的槽函数
// 让服务器可以指定客户端发送
void Widget::mComboBox_refresh()
{
     ui->comboBoxChildren->clear();
     QList<QTcpSocket *> tcpClients = server->findChildren<QTcpSocket *>(); //通过findChildreb去找添加的QTcpSocket对象 -- clients ->添加到列表中
     for(QTcpSocket *tmp:tcpClients){
      //根据端口匹配每一个连接额客户端
      ui->comboBoxChildren->addItem(QString::number(tmp->peerPort()));
     }

   ui->comboBoxChildren->addItem("all");

}

然后将控件提升为我们的自定义控件,即可达到我们希望的效果

刷新效果:

自定义控件槽函数 -  记录选中客户端

//activated - 修改/选择条目后触发 --> 更新comboBox的当前下标选项
//用于匹配当前用户选择的客户端,并同步到全局的childIndex-->方便发送函数指定客户端
void Widget::on_comboBoxChildren_activated(int index)
{
  childIndex = index;
}

发送槽函数 - 指定客户端发送 

// 支持指定客户端发送

//也支持一件全发

// 让服务器可以指定客户端发送
void Widget::mComboBox_refresh()
{
     ui->comboBoxChildren->clear();
     QList<QTcpSocket *> tcpClients = server->findChildren<QTcpSocket *>(); //通过findChildreb去找添加的QTcpSocket对象 -- clients ->添加到列表中
     for(QTcpSocket *tmp:tcpClients){
      //根据端口匹配每一个连接额客户端
      ui->comboBoxChildren->addItem(QString::number(tmp->peerPort()));
     }

   ui->comboBoxChildren->addItem("all");

}

bug解决

bug描述: 客户端连接后又断开,服务器就不能再次发送给这样的客户端

原因: 资源没有回收,导致访问到空的资源(有点像野指针)

解决方法: 利用sender()获取断开连接的客户端,将他的资源使用deleteLater()回收掉

解决!

效果演示

停止监听和断开

停止监听槽函数

void Widget::on_btnStopListen_clicked()
{
    QList<QTcpSocket *> tcpClients = server->findChildren<QTcpSocket *>();
    for(QTcpSocket *tmp:tcpClients){// 对每一个打开的客户端进行资源回收
        tmp->close();
    }
    server->close(); //回收完客户端后才关闭服务器
    //断开连接 --> 恢复控件状态:
    ui->btnListen->setEnabled(true);
    ui->btnStopListen->setEnabled(false);
    ui->btnDisconnect->setEnabled(false);
}

断开槽函数

void Widget::on_btnDisconnect_clicked()
{
  on_btnStopListen_clicked();//先停止监听
  delete server; //将服务器彻底回收
  this->close(); // 关闭整个窗口
}

效果演示

1.先监听

2.客户端接入

3.停止监听,客户端也会断开

4.再次点击监听 --> 断开(整个窗口关闭,不再演示)

qt小技巧: 


当添加一堆控件后,导致一些参数未定义 --> 执行:

构建 ->清理项目
构建 -> 重新构建项目
 

Hololens2可用的tcp通信 说明 基本参考了皮皮的优快云博客,里面有详细的说明。 这里修改了下他的Tcp客户端,使之具有读取服务端发送的信息以及断线重连的功能。(PS:他的源代码里面有几个重名之类的问题,所以直接从他那边复制的代码并不能直接使用) 测试环境 手机开热点作为服务器,将Hololens2连接上手机热点,使用手机上的网络调试app作为tcp服务器(这类app挺多的,我是直接在appstore上下载的 网络调试助手),运行挂载了这个Tcp客户端的Hololens app。 using System.Collections; 阅读详情

相关推荐

VC (MFC)网络调试助手

新手入了MFC的坑,做MFC网络调试助手,记录: 1.效果图,下方有连接(免费) 2.网络调试助手功能较完善,不支持中文转16进制,目前没想到好方法,欢迎交流 3,socket通信使用MFC封装的CSocket类,搞清楚通信的流程很重要,这样的文章有很多 4,进制之间的转化,这个涉及到进制之间的互相转化,因该多去学习 5,各种控件的使用。 socket的通信,TCP 服务器 C...

conimade的博客 3021

用网络调试助手UDP TCP测试

网络调试助手如下方图,协议类型采用:UDP本机IP地址,一般打开后默认地址   端口随意目标主机:要发送给目标的外网IP地址 端口

summitjava的博客 1万+

网络调试助手(模拟下位机收发数据)快速指南

网络调试助手快速上手 避坑经验

吃不胖的Harry公子的博客 1万+

Android studio TCP网络调试助手应用开发(支持TCP Server与Client切换)

Android Studio创建安卓TCP 服务器并与客户端通信的功能,最终的APP集成了客户端模式和服务器模式的切换,形成一个简易的TCP调试助手APP

weixin_43351158的博客 4628

QT项目——网络调试助手

网络调试助手用 QT 模拟网络调试助手的服务器和客户端,可以进行数据收发。服务器:private:// 获取文本编辑器的光标位置,并将其存储在cursor变量中。// 创建一个QTextCharFormat对象,用于设置文本格式。// 使用setForeground方法设置文本的前景色为传入的颜色。// 将格式化后的字符格式应用到光标上。// 使用insertText方法在光标位置插入传入的字符串str。

wei_Embedded_z的博客 2390

Spring AI Alibaba Skill 实战:定义、注册与渐进式披露的企业级落地

摘要:很多团队在接入大模型时,第一步做到的是“能对话”,第二步遇到的瓶颈却是“不能可靠执行”。Skill 的本质不是给模型多几个函数,而是把企业系统中的可控能力,以可治理、可审计、可扩展的方式交给 Agent。本文围绕 Spring AI Alibaba Skill 的定义、注册与渐进式披露,结合电商客服与售后场景,系统讲清楚其底层原理、架构设计、生产级实现、高并发治理与工程实践。@Component@Tool(description = "根据订单号查询订单状态、支付状态和物流状态")扫描包含。

一起修行,不孤单。这里有编程语言、开发工具、学习方法论和踩坑笔记。用简单的话说复杂的事,陪你从小白到进阶。周更干货,欢迎一起成长! 623

网络调试助手的使用 调试TCP,UDP

●野人家园系列调试助手: ①网络调试助手 ②串口调试助手 ③网络+串口二合一调试助手 网络调试助手: 如下图,它有三种协议。TCP协议分客户端和用户端。UDP只有一个。 1.TCP TCP协议是面向连接的,客户端和服务端要先连接上才能发消息。 第一步: 服务端先开启,设置ip和端口 第二步: 客户端连接该ip和端口 2.UDP协议 相比TCP协议: 无连接 快速传输,实时性高 。(因为握手协...

Chiyunyinlong的博客 1万+

ESP32 TWAI CAN库实战:从零构建CyberGear微电机控制框架

本文详细介绍了如何利用ESP32的TWAI控制器和Arduino环境,从零构建一个面向对象的CyberGear微电机控制框架。该框架将复杂的CAN通信协议封装为简洁的API,开发者无需深究底层细节,即可轻松实现电机的速度、位置和扭矩控制,大幅简化机器人关节、云台等项目的开发流程。

oil88的博客 499

网络调试助手的使用方法

在做工控项目的时候,与机械手交互,视觉程序交互比如康耐视或者基恩士视觉进行交互的时候,与客户后天交互,获取前站生产信息,上传生产数据的时候,也要用到网络交互。首先说明一下我们需要使用127.0.0.1回送地址,它是指本地机,一般用来测试使用。此次使用的网络调试软件是TCP调试助手(V1.9),百度搜索就可以下载。实际应用的时候可以根据要求选择调试助手做服务器或者客户端,在设置端口建立通讯就可以进行指令测试了。服务器和客户端的网络指示灯都会变成绿色,表明已经建立网络连接,再打开一个网络调整助手程序,

weixin_71914626的博客 6182

HBF凭什么能挑战HBM?

最近AI圈聊得最多的,除了大模型迭代,就是“算力瓶颈”。大家都知道GPU不够用、HBM抢疯了,但很少有人注意到,存储层正在酝酿一场革命——高带宽闪存(HBF)。今天就结合HBM之父Joungho Kim教授的最新观点,跟大家好好盘盘这门技术:它不是HBM的替代品,却可能重塑AI推理的游戏规则,甚至在2038年超越HBM市场规模。先澄清一个核心认知:HBF不是凭空冒出来的新技术,而是站在HBM肩膀上的“优化款”。

存储随笔 2130

ANSYS 有限元分析 支架拓扑优化设计 分析过程及常见问题解决

1.确定分析类型,所用模块包括两种 static structural Topology Optimization。3.通过草图建立几何模型,建好的几何模型如图1所示。2.工程材料采用默认的Q235。

m0_68737530的博客 1966

手把手带你做一个自己的网络调试助手(4) - 优化完善

if(ui->comboBoxChildren->count() == 0) //当没有客户端接入得到时候让发送按钮不可选。

mx_jun的博客 1163

保姆级教程:用CH34xSerCfg工具修改USB转串口芯片的VID/PID,避免驱动冲突

本文详细介绍了如何使用CH34xSerCfg工具修改USB转串口芯片的VID/PID,解决驱动冲突问题。通过实战案例和配置技巧,帮助开发者高效管理嵌入式设备,避免常见的USB设备识别问题,提升开发效率。

weixin_30924239的博客 224

网络调试助手TCP server不能成功连接

<第一次写博客,开始打算记录学习路上的问题,以方便巩固和讨论,还请多多包涵> 正文: 在使用网络调试助手时,想一个建立TCP server,一个建立TCP client,两者之间进行通信,打开网络调试助手其默认读取本地IP地址,而端口号默认为8080,如下图: 配置好之后,点击连接出现最下面的报错,经过一番查询,知道这里的本地端口号设置需要设置一个没有被占用的端口号0-65535,而...

whocare的博客 4万+

Genesis物理引擎实战指南:轻量级确定性刚体仿真核心

刚体物理仿真作为机器人控制、嵌入式运动学验证和确定性游戏开发的基础技术,其核心在于数值稳定性、跨平台可复现性与约束求解精度。本文围绕线性互补问题(LCP)求解、半隐式欧拉积分和零依赖C++实现三大关键技术展开,解析如何在无GUI、低算力环境下构建可单步调试、帧级可控的确定性仿真系统。重点覆盖碰撞检测数学建模、关节局部坐标系绑定、质量-惯性张量一致性校验等工程落地关键点,适用于STM32、树莓派及教育实验场景。内容深度结合Genesis Physics Engine的源码实践,直击‘穿模’‘NaN’‘关节发软

ciya3282的博客 1590

UVM(5)-TLM通信

TLM是一种基于事务 (transaction) 的通信方式,通常在高抽象级语言例如SystemC或者SV/UVM中作为模块之间的通讯方式。

2301_76431006的博客 2106

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

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

qq_48373597的博客 9730

14、利用Helm和GitOps实现Kubernetes资源管理与CI/CD流程优化

本文介绍了如何结合Helm、GitOps和Terraform等工具,优化Kubernetes资源管理和CI/CD流程。内容涵盖了Helm提供程序的配置、GitOps的核心理念、CI/CD管道的构建与测试策略、GitHub源代码管理模型以及流程优化建议,旨在提升软件开发和部署的效率与质量。

y7z8a9的博客 155

网络调试助手无法连接tcp服务器,S71500做TCP客户端和第三方网络调试助手做服务器无法通信...

以下是引用Chen_TS在2021-02-02 19:03:15的发言 >楼主:在学习S7-1500PLC的开放式TCP通信(指令TCON,TSEND,TRCV)时,因为没有实物,因此我是用的PLCSIM Advanced 3.0仿真软件。第一种情况:我的PLC做TCP服务器,网络调试助手做TCP客户端,没问题,这两者可以通信上。第二种情况:PLC做TCP客户端,网络调试助手做TCP服务器,...

weixin_39913105的博客 8190

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

网络调试助手简单使用教程

用于网络设备调试的工具使用简单介绍

weixin_45127646的博客 3万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

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

dotNet全栈开发 6233

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ONENET平台--TCP透传

手把手教你搭建ONENET云平台之TCP透传

qq_45045583的博客 8424

网络调试助手简单使用教程(CM精装版V3.8.2)

打开网络调试助手,我此处使用的版本是3.8.2,各个版本其实使用方法大同小异。 首先用该软件建立一个TCP服务器,在协议类型处选择TCP Server协议,本机IP地址一般会默认自动填入本机IP,若有多个IP也可以自己修改,端口号设置成小于65536的一个没有使用的端口号,然后点击连接。 若上一步所设置参数无误并且端口号也没有被使用,则连接按钮会自动变为以下状态,表示服务器端配置已成功。 接下来配置客户端,需要注意的是平常我们在调试过程中只需要使用服务器端..

二进制模----细微行动改变影响世界 2万+

基于TCP/QT/C++的网络调试助手测试报告

在网络应用开发和嵌入式系统调试过程中,开发者经常需要模拟客户端-服务器交互,以验证数据传输的正确性和稳定性。然而,传统的网络调试工具通常难以同时支持多个客户端的管理,或者缺乏灵活的调试能力。因此,本项目基于 Qt 框架实现了一款功能强大、易于使用的网络调试助手,旨在提高开发和测试效率。类别功能API/方法TcpServer监听TcpServer连接TcpServer关闭TcpServer信号新连接TcpScoket连接TcpScoket发送TcpScoket接收。

m0_53518956的博客 900

200行C++代码写一个网络调试助手(TCP服务端&TCP客户端)

今天分享一个200行C++代码写成的QT网络调试助手。可以先看看效果。因为我不喜欢用QT Designer,因此我用的组件都是使用代码布局的,所以需要设计一下布局。界面是参考的之前写的串口助手,就是把里面的逻辑改了改,因此外观上看起来差不多。我用的VS2019,一样用VS的小伙伴需要自行去下载QT的插件才可以编写QT的代码。并且我们写网络相关的代码需要设置一下模块。需要把Network模块给勾选上。使用QtCreator的小伙伴需要在配置文件的对应位置加上下面的一段配置。

m0_63235356的博客 2180
上一篇: 手把手带你做一个自己的网络调试助手(1) - TCP服务器准备
下一篇: 手把手带你做一个自己的网络调试助手(3) - TCP客户端
mx_jun
博客等级 码龄5年 1605粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值