Android发送UDP广播

原创 2016年06月01日 10:03:00

TCP/IP是一个协议族。TCP、UDP都是其中的组成部分,IP位于它们之下。
                                   
                 +------+ +-----+ +-----+     +-----+ 
                 |Telnet| | FTP | | TFTP| ... | ... | 
                 +------+ +-----+ +-----+     +-----+ 
                       |   |         |           |    
                      +-----+     +-----+     +-----+ 
                      | TCP |     | UDP | ... | ... | 
                      +-----+     +-----+     +-----+ 
                         |           |           |    
                      +--------------------------+----+
                      |    Internet Protocol & ICMP   | (Internet Protocol就是IP 协议)
                      +--------------------------+----+
                                     |                
                        +---------------------------+ 
                        |   Local Network Protocol  | 
                        +---------------------------+ 

                         Protocol Relationships


只有UDP才支持广播,TCP是不支持广播的。
=====================================================                        
广播有两种,
一种是directed broadcast,比如你的网段是192.168.0.X,你就往192.168.0.255发就可以了。
另一种是limited broadcast,广播地址是255.255.255.255

在IP服务上使用地址值255来表示广播地址,例如:传输信号给192.168.1.255,其实就是传输信号给192.168.1.0子网络内每一台系统。如果你不知道本地子网络地址,可以使用地址255.255.255.255作为广播地址。

limited broadcast需要做一个SetSockopt():
  broadcast:integer;;
  broadcast:=1;
 SetSockopt(FSocket,SOL_SOCKET,SO_BROADCAST, @broadcast,sizeof(broadcast));

两者都是可以的。
directed broadcast不需要SetSockopt(),以标准的C类网为例,直接发送x.x.x.255就可以了,
这种广播只有同一逻辑子网中的机器才能收到,也就是说对方地址应该是x.x.x.y,如果不是
即使在同一物理子网中也是收不到的。当然,这和子网掩码有关。

limited broadcast必须有SetSockopt(FSocket,SOL_SOCKET,SO_BROADCAST, @broadcast,sizeof(broadcast));
它的广播地址是255.255.255.255,它的好处是只要在同一子网中的主机,就可以收到这种
广播,而不必非要在统一逻辑子网中,例如,如果你的地址是x.x.x.1,那么这种广播,地址是x.y.z.a的主机也能收到。

版权声明:本文为博主原创文章,未经博主允许不得转载。擅自转载将负法律责任!

相关文章推荐

Android UDP多播 Not a multicast group 问题处理

Not a multicast group multicastSocket = new MulticastSocket(4320); multicastSocket.setLoopbac...
  • xundh
  • xundh
  • 2015年04月07日 15:06
  • 2389

Java +安卓 定时任务

1.android 自带闹钟定时任务安卓闹钟可以配合广播来实现(不推荐),系统资源浪费,安卓系统在5.0以后的定时 任务貌似触发时间不准了,因为了为了省电。//获取系统闹钟 AlarmManager...
  • forezp
  • forezp
  • 2016年07月28日 17:15
  • 12793

android 广播发送接收UDP

  • 2012年10月28日 12:05
  • 49KB
  • 下载

android发送UDP广播demo

  • 2014年06月21日 18:32
  • 2.79MB
  • 下载

android UDP多点广播,并自动建立Socket连接

如题所示,本文要写的是两台或多台android设备,其中有一台作为服务端,则另外一台或几台作为客户端,然后通过UDP进行自动连接.其实现的原理很简单,服务端这一边通过MulticastSocket将自...
  • pxm2525
  • pxm2525
  • 2014年11月05日 23:38
  • 1985

android局域网udp广播demo

  • 2012年08月11日 15:16
  • 105KB
  • 下载

同wifi环境下android设备自动获取socket服务端的ip地址和端口号的方法-UDP广播

一、最近做项目,需要使用socket做一个常连接,实现实时通信,但是需求是在同一个wifi环境下,ip地址是动态获取的,这样就造成了服务端地址的不确定性。解决这个问题的关键就是如何拿到服务端的Ip。我...

LINUX 下UDP发送广播

  • 2013年12月26日 18:54
  • 10KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android发送UDP广播
举报原因:
原因补充:

(最多只允许输入30个字)