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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python替换文件的某个字符串_用Python替换文件中的字符串

    python替换文件的某个字符串_用Python替换文件中的字符串将所有这些代码放入一个名为mass_replace的文件中.在Linux或MacOSX下,您可以执行chmodxmass_replace,然后运行此操作.在Windows下,您可以使用pythonmass_replace后跟相应的参数来运行它.#!/usr/bin/pythonimportosimportreimportsys#listofextensionstorepl…

    2022年5月23日
    151
  • ASP.NET编程入门与应用_aspnet网站开发实例

    ASP.NET编程入门与应用_aspnet网站开发实例<htmlxmlns=”http://www.w3.org/1999/xhtml”><head><title>KindEditor</title><linkrel=”stylesheet”href=”./js/kindeditor/themes/default/default.css”/>…

    2022年10月12日
    2
  • PMF Model[通俗易懂]

    PMF Model[通俗易懂]转载自:http://blog.csdn.net/shenxiaolu1984/article/details/50372909Mnih,Andriy,andRuslanSalakhutdinov.“Probabilisticmatrixfactorization.”Advancesinneuralinformationprocessingsystems.2

    2022年6月16日
    32
  • python 存储bmp格式图片[通俗易懂]

    python 存储bmp格式图片[通俗易懂]importnumpyasnpfromPILimportImage#读入数据arr,此处为手动设置arr=np.array([[0,0,0,0,0],[0,0,0,0,0],[1,1,1,1,1],[1,1,1,1,1],[0,0,0,0,0]])#将元素类型更改为’uint8’arr=np.array(arr,dtype=’uint8′)arr=Image.froma

    2025年6月7日
    2
  • python 报表开发工具_自定义报表 开源

    python 报表开发工具_自定义报表 开源BIRT报表是一款非常流行的开源报表开发工具。拥有和Dreamweaver一般的操作界面,可以像画table一样画报表,生成图片,导出Excel,html分页样样齐全,样式和script设置简单。PentahoReportDesigner是一款所见即所得的开源报表设计工具。在设计报表的时候,用户可以随意拖放和设置各种报表的控件,还可以快速方便地设置报表的数据来源。在报表的设计过程中,用户可…

    2022年10月20日
    2
  • 记一次压测问题定位:connection reset by peer,TCP三次握手后服务端发送RST

    记一次压测问题定位:connection reset by peer,TCP三次握手后服务端发送RST问题描述这两天用Go做一个比较简单的task:后端有HTTPServer和TCPServer。客户端通过http接入到HTTPServer,HTTPServer通过RPC将请求发送到TCPServer,所有的业务逻辑都由TCPServer处理。压测:自己的mac电脑(CPU:Inteli7,4核,2.7GHz。内存:16G),硬件够用。客户端用Go编写,1个goruntine启…

    2022年10月1日
    3

发表回复

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

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