C#/Unity计算局域网广播地址方式
本篇使用环境:
- 单播可以播出去
- 局域网用 “255.255.255.255”/Broadcast 广播消息播不出去
- 前提是关闭了虚拟网卡等一系列用不到的网卡,还是播不出去。关闭路径:“控制面板\所有控制面板项\网络连接”
具体原因看下面的介绍链接吧
直接广播地址和受限广播地址的介绍:https://zhidao.baidu.com/question/79080266.html
受限广播地址:
主机位、网络为全为1(即255):255.255.255.255
用于IP地址请求阶段
直接广播地址:
主机位为1(即255),网络位正常:192.168.1.255
用于子网广播
具体使用方法就是把Broadcast改为直接广播地址:
直接广播地址的C#计算方式如下:
**
广播地址 = 子网掩码按位 求反 再 或 IP地址
**
public IPAddress IpAddress;public IPAddress SubnetMask;public IPAddress BroadcastIP;void RunFunction(){IpAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList.Last();SubnetMask = GetSubnetMask(IpAddress);BroadcastIP = GetBroadcast(IpAddress, SubnetMask);}/// <summary> /// 获得广播地址 /// </summary> /// <param name="ipAddress">IP地址</param> /// <param name="subnetMask">子网掩码</param> /// <returns>广播地址</returns> IPAddress GetBroadcast(IPAddress ipAddress, IPAddress subnetMask) {byte[] ipAdd = ipAddress.GetAddressBytes(); byte[] subnet = subnetMask.GetAddressBytes();for (int i = 0; i < ipAdd.Length; i++) { ipAdd[i] = (byte)(~subnet[i] | ipAdd[i]); } return new IPAddress(ipAdd); }/// <summary>/// 获取子网掩码/// </summary>/// <param name="ipAdd">IP地址</param>/// <returns></returns>IPAddress GetSubnetMask(IPAddress ipAdd){foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces()){foreach (UnicastIPAddressInformation unicastIPAddressInformation in adapter.GetIPProperties().UnicastAddresses){if (unicastIPAddressInformation.Address.AddressFamily == AddressFamily.InterNetwork){if (ipAdd.Equals(unicastIPAddressInformation.Address)){return unicastIPAddressInformation.IPv4Mask;}}}}//return IPAddress.Parse("255.255.255.0");throw new ArgumentException($"没有发现该{ipAdd}对应的子网掩码");}
C#/Unity计算局域网广播地址方式相关推荐
- 学习编写Unity计算着色器 Learn to Write Unity Compute Shaders
利用图形处理器的力量 你会学到: 如何编写Unity计算着色器 如何在后处理图像过滤器中使用ComputeShaders 如何使用ComputeShaders进行粒子效果和群集 如何使用Structu ...
- 金融系统中正确的金额计算及存储方式
转载自 金融系统中正确的金额计算及存储方式 经典的精度丢失问题 Java中的类型float.double用来做计算会有精度丢失问题,下面来看下面的示例. public static void main ...
- rust 局域网联机_腐蚀怎么进行局域网联机方式 酷跑加速器和你畅玩游戏世界
到现在,还是有人在玩腐蚀这个游戏,玩的人还很多,小编就是其中一个,那如果要进行搭建rust的局域网联机方式要怎么办呢,大家是不是觉得有点意思呢,接下来就一起看看这个rust局域网的联机方式且腐蚀怎么进 ...
- IP地址段计算方法——计算最大广播地址,最小网络地址
首先说下 IP地址最大位数为32位 然后 分4组 每1组8位:10100000,10101110,10100000,10110000 这里用: 10.174.20.176/24 这个网段做例子 首先 ...
- python 量子计算包_ProjectQ:解锁Python实现量子计算的新方式!
原标题:ProjectQ:解锁Python实现量子计算的新方式! [ ] [IT168 资讯]现在已经有很多软件框架可用于访问量子计算机,本文将要提到的ProjectQ就是其中之一.ProjectQ是 ...
- 复刻 Unity编辑器 移动的方式
复刻 Unity编辑器 移动的方式 第一人称移动 自定义键值补充 代码搭载 老规矩,直接上代码: 第一人称移动 using System.Collections; using System.Colle ...
- Java8使用LocalDateTime获取正确的第几周和计算日期最佳方式
先上问题 public static void main(String[] args) {//使用DateTimeFormatter获取当前周数DateTimeFormatter dateTimeFo ...
- Unity控制角色移动方式
Unity控制角色移动方式* 动态"是游戏最基本的特性之一,游戏只有动起来才能吸引人.今天主要和大家分享一下我平时通过unity控制主角移动的方式. 1 直接更改角色的transform.p ...
- Unity使用Gradle打包方式接入Firebase时配置文件google-services.json遇到的坑
Unity使用Gradle打包方式接入Firebase时配置文件google-services.json遇到的坑 1.unity打包的时候找不到google-services.json 1.首先在ma ...
最新文章
- 需求编写的几点经验之谈
- Base64的编码规则和C#实现
- nodejs中httpserver的安装和使用
- android adb 传文件大小,使用adb在电脑和手机间传文件
- eeprom的wp 引脚_EEPROM
- Python MySQLdb 学习总结
- bootstrap在 刷新页面,tab选择页面不会改变。
- PTA—念数字(C语言)两种方法
- Android build.gradle文件详解(转述自《Android第一行代码》第二版)
- Kaldi AMI数据集脚本学习2----run_prepare_shared.sh
- html 报文头 参数 详解 本文转载于 http://stephen830.javaeye.com/blog/335578
- LitePal(版本1.5.0,写此博客时是最新版本)
- matlab besselh,关于用matlab求bessel函数零点
- 详解Java编码与解码以及常见的编码表,灵活处理乱码问题
- php 邮箱反垃圾机制,企业邮箱中的反垃圾邮件规则
- 查杀病毒实战----------------》ddg.223 and AnXQV
- Selenium显示等待和隐式等待
- 华为RH2288H V3服务器raid配置
- 文章还需自己写,论文抄袭误国家
- Ubuntu系统镜像盘ISO:各版本大全、国内网速下载地址(阿里云)