最近在看一个局域网聊天的源码(Qt做的)

发现大佬用了这样的代码:

udpSocket->bind(port, QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint);

根据文档可以知道这个ShareAddress,允许其他的服务(进程)去绑定这个IP和端口,而这个ReuseAddressHint为失败后立即使用他与SO_REUSEADDR一毛一样(这是官方文档上说的,不是我说的)

下面是来自一个大佬的博文的信息。

Q:编写 TCP/SOCK_STREAM 服务程序时,SO_REUSEADDR到底什么意思?

A:这个套接字选项通知内核,如果端口忙,但TCP状态位于 TIME_WAIT ,可以重用端口。如果端口忙,而TCP状态位于其他状态,重用端口时依旧得到一个错误信息,指明"地址已经使用中"。如果你的服务程序停止后想立即重启,而新套接字依旧使用同一端口,此时SO_REUSEADDR 选项非常有用。必须意识到,此时任何非期望数据到达,都可能导致服务程序反应混乱,不过这只是一种可能,事实上很不可能。

【备注】一个套接字由相关五元组构成,协议、本地地址、本地端口、远程地址、远程端口。SO_REUSEADDR 仅仅表示可以重用本地本地地址、本地端口,整个相关五元组还是唯一确定的。所以,重启后的服务程序有可能收到非期望数据。必须慎重使用SO_REUSEADDR 选项。

下面来说下组播,我直接总结下百度上看到的资料,

组播又名多播,就是指向某一个组发送,特定的几个人。

这个概念真是SO happy啊。。。。

比如说局域网聊天, 我多开了几个程序,那么就可以用组播来搞。(在本地回环中,的确可以实现【每一个程序都收到了消息】)

明天,我也将做一个简易版的udp组播聊天软件,并加上了tcp文件传输。

睡觉了!!!!

TCP/IP学习笔记-Qt中的ReuseAddressHint以及SO_REUSEADDR,以为组播常用场景分析相关推荐

  1. 【TCP/IP学习笔记1】 C语言讲解

    TCP/IP学习笔记(一) 一. TCP/IP结构:      TCP/IP是一个四层协议,结构如下:      1.应用层:各种应用程序和协议,如Http.FTP等.      2.传输层:TCP和 ...

  2. TCP/IP学习笔记(一)(转载)

    一.TCP/IP结构:      TCP/IP是一个四层协议,结构如下:      1.应用层:各种应用程序和协议,如Http.FTP等.      2.传输层:TCP和UDP      TCP提供一 ...

  3. TCP / IP学习笔记(9)-dns域名系统

    TCP / IP学习笔记(9)-dns域名系统 前面已经提到了访问一台机器要靠IP地址和MAC地址,其中,MAC地址可以通过ARP协议得到,所以这对用户是透明的,但是IP地址就不行,无论如何用户都需要 ...

  4. TCP IP学习笔记① 互联网通信过程

    文章目录 一.TCP/IP和OSI模型 二.协议分层 2.1 物理层 2.2 数据链路层 2.2.1 以太网协议 2.2.2 MAC地址 2.2.4 广播 2.3 网际层 2.3.1 IP地址     ...

  5. TCP/IP学习笔记(3)----IP,ARP,RARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层(网络层协议),ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP ...

  6. TCP/IP学习笔记(八)复位报文段

    TCP报文首部中存在一个RST位,如果该位被置1则表示这是个复位报文段.当一个报文段从一端发往一个不存在或者处于异常状态的另一端时,就会以一个复位报文段应答发送端,告知发送端连接出现错误,应当被关闭 ...

  7. TCP/IP学习笔记(五)TCP的保活定时器

    正常情况下,TCP连接的终止需要经历四次挥手阶段,体现在代码上就是某一端主动调用close函数关闭套接字,随后TCP向对端发送FIN位被置为1的报文段标志着连接的结束,同时对端响应应答报文段,并在随后 ...

  8. TCP/IP学习笔记(四)TCP超时重传及拥塞控制

    TCP是可靠的传输层协议,但这并不意味着一端发送的数据一定可以到达另一端,因为传输过程中遇到的情况是不可控的,很有可能就有某些数据发生丢失,所以"可靠"其实并不可靠. 不过毕竟现如 ...

  9. TCP/IP学习笔记(2)-数据链路层

    数据链路层有三个目的: 为IP模块发送和接收IP数据报. 为ARP模块发送ARP请求和接收ARP应答. 为RARP发送RARP请求和接收RARP应答 ip大家都听说过.至于ARP和RARP,ARP叫做 ...

最新文章

  1. 基于FPGA的超声波数据图像显示
  2. C语言寻找错误是哪个快捷键,求大佬改正寻找一下错误,
  3. Kevin专栏---自定义安装对话框的界面
  4. 安装redis提示[test] error 2_安装PHP Redis扩展
  5. 剑指前端(前端入门笔记系列)——数组(基本语法)
  6. init是一个自定义方法名
  7. 【HDOJ】【3415】Max Sum of Max-K-sub-sequence
  8. ffmpeg下载及转码批量操作
  9. 如何在 Mac 上映射网络驱动器
  10. 数学建模论文写作方法大总结
  11. 小型游戏《笑傲江湖之精忠报国》全过程_01
  12. Markdown 语法支持测试
  13. 在ubuntu9.10下 安装nvidia GT130M最新驱动190.42版本
  14. 计算机二级新年来临贺卡步骤,2021新年贺卡怎么做步骤图片
  15. 为什么顺丰快递就要比别的快递快,别的快递难道做不到吗?
  16. SAP那些事-理论篇-14-SAP中的财务管理理念
  17. 公司的报表工具太难用,我三天撸了个Excel工具,运营小姐姐直呼太好用了,现已开源!!(建议收藏)
  18. java-数组常用api
  19. Linux服务管理-OpenSSH基础操作
  20. java bulk_elasticsearch Java API 之Bulk API(批量操作)

热门文章

  1. 在后台获取前台按钮里的值(如LinkButton)
  2. 论程序员的核心竞争力
  3. 对称加密算法-DES以及DESede算法
  4. C++ 程序员如何迎接 Windows 10 的到来
  5. 『转』数据库的委托之类型分类处理
  6. 飞鸽传书2009的“真正价值”
  7. 死于非命的中国亿万富翁们 1
  8. Python爬虫 senlenium爬取拉勾网招聘数据,你学会了吗
  9. 用python机器学习实现新闻关键词的抽取,你学会了吗?
  10. 监督学习 | SVM 之支持向量机Sklearn实现