标签:章节 UPD 绑定 感想 置空 IP地址 接字 服务端 客户端
课程看到了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,绑定,感想,置空,IP地址,接字,服务端,客户端 来源: https://www.cnblogs.com/mycoders/p/15733196.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。