课程看到了UDP,

首先了解UDP的原理模型.

服务端,首先是实例QUdpSocket,也就是UDP套接字,然后,需要绑定.绑定一个任意IP地址,分为IPV4和IPV6.自行选择课程中讲解时绑定的是IPV4地址.此处有一个知识点如果此时向网络发送消息,是全网广播,那么就会造成网络的堵塞,

  可以建立一个组播joinMulticastGroup(),组播时的地址是D类地址,也就是224.0.0.1-239.255.255.255.参考了一下百度出来的结果:https://blog.csdn.net/qq_37717494/article/details/105529004..然后就是定义一个公共的槽函数,处理收到的信息.在对方发给我们数据时,套接字会自动的触发readyRead().最后,用readDatagram/writeDatagram进行收发操作.

在客户端,不需要绑定,实例化QUdpSocket之后,用readDatagram/writeDatagram进行收发操作.

大致上代码客户端和服务端一样,我自己进行了一点扩展,关于套接字的close(),在最开始进行判断,套接字是否置空,没有置空,就先置空,然后再退出组播,然后关闭套接字,最后将套接字置空,如果已经是空,那就返回.

相应的,在发送信息的时候,要重新实例化套接字.也要进行相应的判断

  这样就不会因为连续关闭出现崩溃,和关闭后,无法发送信息.这些都是我自己做的扩展.还有对于发送前,对IP地址和端口的数据检查.我只做了不为空的检查,实现开发时,还要对其格式进行检查,也可以对于编辑框进行输入限定,根据固定的格式输入.

  有一个困惑,如果是客户端给服务端发消息,因为服务端进行了绑定和开启了组播,那么服务收到后,可以获取到发送消息的客户端的IP地址和端口号,那么客户端没有发送消息之前,如何获取这个客户端的IP地址和端口呢?是不是说只能客户端先发消息?这些只能待后其学习深 入再查一查资料了.

关于UPD章节学习的一些感想的更多相关文章

  1. 《C++编程思想》部分章节学习笔记整理

    简介 此笔记为<C++编程思想>中部分章节的学习笔记,主要是第15章--多态性和虚函数 的学习笔记,此外还有少量其他章节的内容. 目录 文档:<C++编程思想>

  2. 《图解HTTP》部分章节学习笔记整理

    简介 此笔记为<图解HTTP>中部分章节的学习笔记. 目录 第1章 了解Web及网络基础 第2章 简单的HTTP协议 第4章 返回结果的HTTP状态码 第7章 确保web安全的HTTPS

  3. 《鸟哥的Linux私房菜》部分章节学习笔记整理

    简介 此笔记为<鸟哥的Linux私房菜·基础学习篇>中部分章节的学习笔记. 目录 0 计算机概论 1 Linux是什么与如何学习 2 主机规划与磁盘分区 3 安装CentOS7.x 4 首 ...

  4. 关于JAVA学习计划和感想

    学习计划第一阶段:    JAVA语言基础知识.包括异常.IO流.多线程.集合类.    要求:异常------掌握try-catch-finally的使用          IO流------掌握字 ...

  5. Unity3D 新人学习的一点感想

    想到那里写到那里吧 1.Unity3D的优点大家都知道:组件化.c#语言.可见即所得. 当初刚开始学习的是cocos2dx,c++的货,觉得还是写的不错的,也是国人开发的,真的代码很容易懂,直接看引擎 ...

  6. 学习EtherCAT的感想

    第一次进入到自动化领域,接触的第一个项目就是EtherCAT的测试.初次接触以太网,有一点茫然,百度看了很多关于EtherCAT的介绍,看了一些相关的论文.EtherCAT的资料很多:ETG1000. ...

  7. 20155324王鸣宇安装虚拟机+初次学习Linux的感想20155324

    安装Linux系统 这是最后一次预备作业,但不是最后一次作业.当然要认真对待,在这个除旧迎新的日子里.认真的花了一个下午的时间专研学习了如何安装Linux系统.通过学习了基于VirtualBox虚拟机 ...

  8. 关于C语言学习的一些感想(初学者)

    C语言是一门通用计算机编程语言,广泛应用于底层开发.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言. 尽管C语言提供了许多低 ...

  9. CMAKE 教程前两章节学习

    原文 https://cmake.org/cmake-tutorial/ 以下是一个循序渐进的教程,它覆盖了CMAKE帮助改进的通常的构建系统的话题.许多话题在<掌握CMAKE>(< ...

  10. 《Lucene in Action 第二版》第4章节 学习总结 -- Lucene中的分析

    通过第四章的学习,可以了解lucene的分析过程是怎样的,并且可以学会如何使用lucene内置分析器,以及自定义分析器.下面是具体总结 1. 分析(Analysis)是什么? 在lucene中,分析就 ...

随机推荐

  1. JDBC之Connection

    Connection 目录 Connection Java连接MySQL Connection必备知识点 利用JDBC使用Connection 问题一:为什么Java操作数据库的连接不是越多越好 问题 ...

  2. PR / PO审批

    PR审批的BAPI 1.单个项目PR审批 CALL FUNCTION 'BAPI_REQUISITION_RELEASE' EXPORTING number = l_banfn rel_code = ...

  3. C++ 单向链表手动实现(课后作业版)

    单向链表,并实现增删查改等功能 首先定义节点类,类成员包含当前节点的值和下一个节点的地址 /node definition template <typename T> class Node ...

  4. 数据脱敏java代码

    //前prefix后suffix脱敏 public static String idEncrypt(String number ,Integer prefix, Integer suffix) { i ...

  5. sed编辑器

    sed sed是一个非交互式的流文本编辑器,可实现增删改查,广泛适用于shell脚本中 工作原理 sed每次只从文本或标准输入中读取一行数据,将其拷贝到一个编辑缓冲区,然后对其如同命令一般处理,并显示 ...

  6. holiday12

    holiday12--linux basis super user(root) In linux, account root usually use for system maintain and m ...

  7. 异步Udp监听关闭 出现异常,访问已释放的资源或者其他错误的解决方法

    在开发异步Udp程序的过程中,通常在关闭UDP的时候回遇到诸如socket 访问已释放的资源之类的异常,如下简单操作下: 1 Udp的监听 2 this.serverSocket = new Sock ...

  8. python 安装步骤

    1.这个安装方法不需要配置环境变量 2. 3. 4.进入cmd,输入python -v

  9. Get Keys In Binary Tree Layer By Layer

    Get the list of list of keys in a given binary tree layer by layer. Each layer is represented by a l ...

  10. linux分区增加硬盘空间

    https://blog.csdn.net/netgc/article/details/119978449