TCP/IP学习笔记-Qt中的ReuseAddressHint以及SO_REUSEADDR,以为组播常用场景分析
最近在看一个局域网聊天的源码(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,以为组播常用场景分析相关推荐
- 【TCP/IP学习笔记1】 C语言讲解
TCP/IP学习笔记(一) 一. TCP/IP结构: TCP/IP是一个四层协议,结构如下: 1.应用层:各种应用程序和协议,如Http.FTP等. 2.传输层:TCP和 ...
- TCP/IP学习笔记(一)(转载)
一.TCP/IP结构: TCP/IP是一个四层协议,结构如下: 1.应用层:各种应用程序和协议,如Http.FTP等. 2.传输层:TCP和UDP TCP提供一 ...
- TCP / IP学习笔记(9)-dns域名系统
TCP / IP学习笔记(9)-dns域名系统 前面已经提到了访问一台机器要靠IP地址和MAC地址,其中,MAC地址可以通过ARP协议得到,所以这对用户是透明的,但是IP地址就不行,无论如何用户都需要 ...
- 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地址 ...
- TCP/IP学习笔记(3)----IP,ARP,RARP协议
把这三个协议放到一起学习是因为这三个协议处于同一层(网络层协议),ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP ...
- TCP/IP学习笔记(八)复位报文段
TCP报文首部中存在一个RST位,如果该位被置1则表示这是个复位报文段.当一个报文段从一端发往一个不存在或者处于异常状态的另一端时,就会以一个复位报文段应答发送端,告知发送端连接出现错误,应当被关闭 ...
- TCP/IP学习笔记(五)TCP的保活定时器
正常情况下,TCP连接的终止需要经历四次挥手阶段,体现在代码上就是某一端主动调用close函数关闭套接字,随后TCP向对端发送FIN位被置为1的报文段标志着连接的结束,同时对端响应应答报文段,并在随后 ...
- TCP/IP学习笔记(四)TCP超时重传及拥塞控制
TCP是可靠的传输层协议,但这并不意味着一端发送的数据一定可以到达另一端,因为传输过程中遇到的情况是不可控的,很有可能就有某些数据发生丢失,所以"可靠"其实并不可靠. 不过毕竟现如 ...
- TCP/IP学习笔记(2)-数据链路层
数据链路层有三个目的: 为IP模块发送和接收IP数据报. 为ARP模块发送ARP请求和接收ARP应答. 为RARP发送RARP请求和接收RARP应答 ip大家都听说过.至于ARP和RARP,ARP叫做 ...
最新文章
- 基于FPGA的超声波数据图像显示
- C语言寻找错误是哪个快捷键,求大佬改正寻找一下错误,
- Kevin专栏---自定义安装对话框的界面
- 安装redis提示[test] error 2_安装PHP Redis扩展
- 剑指前端(前端入门笔记系列)——数组(基本语法)
- init是一个自定义方法名
- 【HDOJ】【3415】Max Sum of Max-K-sub-sequence
- ffmpeg下载及转码批量操作
- 如何在 Mac 上映射网络驱动器
- 数学建模论文写作方法大总结
- 小型游戏《笑傲江湖之精忠报国》全过程_01
- Markdown 语法支持测试
- 在ubuntu9.10下 安装nvidia GT130M最新驱动190.42版本
- 计算机二级新年来临贺卡步骤,2021新年贺卡怎么做步骤图片
- 为什么顺丰快递就要比别的快递快,别的快递难道做不到吗?
- SAP那些事-理论篇-14-SAP中的财务管理理念
- 公司的报表工具太难用,我三天撸了个Excel工具,运营小姐姐直呼太好用了,现已开源!!(建议收藏)
- java-数组常用api
- Linux服务管理-OpenSSH基础操作
- java bulk_elasticsearch Java API 之Bulk API(批量操作)