UDP广播分为有限广播和直接广播;
有线广播:将数据传播到本局域网内所有网段,但不能跨路由器(255.255.255.255)
直接广播:将数据传播到指定网段内的所有主机,能跨过路由器广播(192.168.1.255)
=======================================================================================
专门用于同时向网络中所有工作站进行发送的一个地址叫做广播地址。在使用TCP/IP 协议的网络中,主机标识段host ID 为全的IP 地址为广播地址。如果你的IP为:.168.1.39,子
网掩码为:.255.255.0,则广播地址为:.168.1.255;如果IP为.168.1.39,子网掩码为:.255.255.192,则广播地址为:.168.1.63【这里你会发现192+63=255,哈哈】。
如果只想在本网络内广播数据,只要向广播地址发送数据包即可,这种数据包可以被路由,它会经由路由器到达本网段内的所有主机,此种广播也叫直接广播;如果想在整个网络
中广播数据,要向.255.255.255发送数据包,这种数据包不会被路由,它只能到达本物理网络中的所有主机,此种广播叫有限广播。
广播的规则:
1. 接收方一定要知道广播方的口号,然后绑定此端口号才能正确接收。(相当于服务器里的操作==本博客中:http://blog.csdn.net/baidu_32134295/article/details/70786750 ==)
2. 接收方的Socket不需要设置成广播属性。【接收方相当于服务器】
3. 绑定的IP不可以使用“.0.0.1”,可以使用真实IP地址或者INADDR_ANY。否则接收失败。【规则1链接博客中 bind()绑定IP时输入ip不能为127.0.0.1即 本机ip】
4. 发送端如果没有设置BLOADCASE选项的不递送。【相当于客户端Client 一定要设置广播属性,通过函数setSocketopt()来进行设置】
=======================================================================================
创建套接字(socket)【套接字其实就是进程间进行通信的接口】时,可以通过setSocketopt()函数来设置广播类型。
而创建socket 时,它有两种属性:阻塞(默认状态)和非阻塞。可以通过函数ioctlsocket()函数改变阻塞状态