Go如何发送广播包

Go如何发送广播包

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

发送网络数据包成三种方式,每间单播、组播、广播


广播通俗地讲,就是让你的机器发送的数据包能够被同一个网络内的全部主机都接收到。


在解说怎样发送广播包之前。先来看看跟广播有关的知识:

我们都知道IP地址的作用是用来在网络中定位某个网络接口的(没错,准确的讲。IP并非定位某一台主机)。

我们通常见到的IP地址的形式都是例如以下这样子的:

                    XXX.XXX.XXX.XXX

这样的IP地址的形式叫做点分十进制表示法,事实上IP是一个32位长的二进制数,以每8位为单位,共分成4个部分。也就是分成了4个字节。


IP地址的组成方式是:  [网络号]+[主机号]

网络号是用来标识某个网络的,而主机号是用来标识网络中的某一台主机的(事实上是主机上的某个接口)。


通常计算机发送一个数据包时会在数据包的头部加上发送者的IP地址。和接收者的IP地址。

可是一般计算机发送数据包的时候,同一个网络内的全部主机都会收到这个数据包,可是仅仅有那个自己的IP地址和数据包中的接收者的IP地址同样的那个计算机才会真正接收这个数据包。

假设要让网络(同一网络)中的全部计算机都能收到这个数据包。就应该将这个数据包的接收者地址设置为这个网络中的最高的主机号。通常255.255.255.255就能够达到这个要求。所以我们假设要发送一次UDP广播报文,就能够试试例如以下实例代码:

package main

import "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, 然后运行一下程序。就能够抓到我们发送的广播包了:

Go如何发送广播包


假设转载请注明出处:http://blog.csdn.net/gophers


版权声明:本文博客原创文章。博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117378.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux跨网段实现内网互通_docker跨主机通信

    linux跨网段实现内网互通_docker跨主机通信1.简介TCP协议规定只有处于同一个网段的IP才能实现互通,如果处于不同网段,可以配置一台双网卡机器为网关然后指定路由线路实现跨网段访问。实现思路:将双网卡服务器作为一个代理服务器,实现双向网关的一个功能如上图所示,Proxy作为双向网关Client如果要实现Server的互通,如果Client和Server在同一个子网段可以直接ping同,但是如果不在同一个网段,Client就会先去找其网关,再由其网关寻找Server,对于Server也是这样。2.实现方案2.1代理1.开启数据包的转发功

    2022年9月11日
    0
  • 用一份JAVA工程师的求职简历来说说求职简历怎么写[通俗易懂]

    用一份JAVA工程师的求职简历来说说求职简历怎么写[通俗易懂]这是一篇我比较想看到的简历指导的文章。但是我比较反对简历造假。我觉得会什么写什么把。Java就业指导  想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,面试者在面试之前到底需要准备哪些东西呢?本文陈列的这些内容既可以作为个人简历中的内容,也可以作为面试的时候跟面试官聊的东西,你可以把这些内容写到你的简历中,当然更需要的是你在面试的时候向面试官展示这些专业技能。相信此文…

    2022年9月23日
    0
  • 一步一步写算法(之 A*算法)

    一步一步写算法(之 A*算法)

    2021年12月4日
    38
  • R语言入门mac——RStudio安装➕R包安装【附安装链接】[通俗易懂]

    R语言入门mac——RStudio安装➕R包安装【附安装链接】[通俗易懂]R语言入门mac——安装【附安装链接】这里写目录标题R语言入门mac——安装【附安装链接】一、总体安装步骤1安装R2下载RStudio二、R包安装一、总体安装步骤1安装RRStudio需要R3.0.1+下载链接:https://cran.rstudio.com/2下载RStudio下载链接:https://rstudio.com/products/rstudio/download/二、R包安装下面展示r包安装代码rm(list=ls())options()$repos

    2022年6月27日
    163
  • 中文人物关系图谱构建与应用项目(人物关系抽取,关系抽取评测)

    中文人物关系图谱构建与应用项目(人物关系抽取,关系抽取评测)ChinesePersonRelationGraphChinesePersonRelationGraph,personrelationshipextractionbasedonnlpmethods.中文人物关系知识图谱项目,内容包括中文人物关系图谱构建,基于知识库的数据回标,基于远程监督与bootstrapping方法的人物关系抽取,基于知识图谱的知识问答等应用.项目地址:htt…

    2022年6月26日
    47
  • C语言冒泡排序升序_c语言快速排序和冒泡排序

    C语言冒泡排序升序_c语言快速排序和冒泡排序任务代码:执行情况:知识总结:冒泡排序法:也叫升序排序法,但是相比起二分法查找只能应用于有序数列,二如何将一个无序数列变的有序就可以使用冒泡排序法!!!对上面的过程进行总结:该思想体现在成续上的解法是:实例:冒泡排序不仅仅可以应用于数字同样可以应用于字符字母的快速排序:心得体会:

    2025年6月15日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号