Go如何发送广播包
来源:互联网 发布:js怎么创建二维数组 编辑:程序博客网 时间:2024/06/09 02:25
网络数据包的发送分为三种方式,分别是单播、组播、广播。
广播通俗地讲,就是让你的机器发送的数据包可以被同一个网络内的所有主机都接收到。
在讲解如何发送广播包之前,先来看看跟广播有关的知识:
我们都知道IP地址的作用是用来在网络中定位某个网络接口的(没错,准确的讲,IP并不是定位某一台主机)。我们通常见到的IP地址的形式都是如下这样子的:
XXX.XXX.XXX.XXX
这种IP地址的形式叫做点分十进制表示法,其实IP是一个32位长的二进制数,以每8位为单位,共分成4个部分,也就是分成了4个字节。
IP地址的组成方式是: [网络号]+[主机号]
网络号是用来标识某个网络的,而主机号是用来标识网络中的某一台主机的(其实是主机上的某个接口)。
通常计算机发送一个数据包时会在数据包的头部加上发送者的IP地址,和接收者的IP地址。但是一般计算机发送数据包的时候,同一个网络内的所有主机都会收到这个数据包,但是只有那个自己的IP地址和数据包中的接收者的IP地址相同的那个计算机才会真正接收这个数据包。
如果要让网络(同一网络)中的所有计算机都能收到这个数据包,就应该将这个数据包的接收者地址设置为这个网络中的最高的主机号。通常255.255.255.255就可以达到这个要求。所以我们如果要发送一次UDP广播报文,就可以试试如下实例代码:
package mainimport "net"func main() {// 这里设置发送者的IP地址,自己查看一下自己的IP自行设定laddr := net.UDPAddr{IP: net.IPv4(192, 168, 137, 224),Port: 3000,}// 这里设置接收者的IP地址为广播地址raddr := net.UDPAddr{IP: net.IPv4(255, 255, 255, 255),Port: 3000,}conn, err := net.DialUDP("udp", &laddr, &raddr)if err != nil {println(err.Error())return}conn.Write([]byte(`hello peers`))conn.Close()}
打开WireShark,设定过滤规则为udp.port == 3000, 然后执行一下程序,就可以抓到我们发送的广播包了:
如果转载请注明出处:http://blog.csdn.net/gophers
0 0
- Go如何发送广播包
- UDP发送广播包
- java发送udp广播包
- java发送udp广播包
- socket_浅谈发送广播包杂记
- UDP协议发送、接收广播包 .
- UDP广播包的发送问题
- linux socket 如何发送分组广播
- 如何快速有效的发送一个广播
- android中如何发送一个广播
- android中如何发送一个广播
- android中如何发送一个广播
- 网络通信之如何广播发送
- Android如何在局域网中发送广播
- 广播发送
- 发送广播
- 广播发送
- vxworks下MUX接口的使用-发送全广播包
- SDIO
- 生活点滴 -- 做更好的自己,人生最不值得你去做的30件事
- 看文献心得--有舍有得
- C、Shell、Perl基于Tomcat开发CGI程序环境配置
- DP + math 之 Codeforces 126D - Fibonacci Sums
- Go如何发送广播包
- ZC301摄像头,OK6410的开发板,linux3.0.1,内核Oops的解决方法
- CloudTV Based on WebRTC(基于WebRTC的云电视)
- 4 Reasons why SharePoint is Dying 四个理由告诉你,为什么SharePoint即将死去
- hashtable详细介绍
- 机房收费系统系列一:运行时错误‘-2147217843(80040e4d)’;用户‘sa’登陆失败
- poj 2411 Mondriaan's Dream
- Android检测是否安装了指定应用
- 1197: [HNOI2006]花仙子的魔法