没有系统的学习过网络,想做联机游戏还真是费劲,想做在局域网内实现自动搜索服务器的功能,然后就想到了使用UDP进行广播,把服务器的信息广播给每一个玩家。

     Socket udpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
int udpPort = ;
bool isRun = false; string broadcastMessage = "房间号|||房间名|||总人数|||人数"; // 要广播的内容 public void CreateRoom()
{
udpSocket.EnableBroadcast = true; // 权限
Thread thread_Broadcast = new Thread(Broadcast);
thread_Broadcast.Start(); // 启动线程进行广播
}
private void Broadcast()
{
IPAddress[] ipAddressArr = Dns.GetHostAddresses(Dns.GetHostName()); // 得到本机所有的IP地址
List<string> ipPrefixList = new List<string>(); // IP地址前三个部分相同则说明处于同一局域网,所以把所有IP的前三部分存起来,放一个list中
foreach (var item in ipAddressArr)
{
if(item.AddressFamily == AddressFamily.InterNetwork) // 判断是不是IPV4
{
string ipPrefix = item.ToString();
int endPointIndex = ipPrefix.LastIndexOf('.'); // 得到最后一个点的位置
ipPrefix = ipPrefix.Remove(endPointIndex + ); // 移除IP的第四部分
ipPrefixList.Add(ipPrefix);
}
}
while (isRun) // 不太清楚为什么不管把线程设置成前台线程还是后台线程,在unity编辑里结束游戏的时候,线程都不结束,所以这里使用标志变量来结束
{
foreach (var item in ipPrefixList)
{
broadcastMessage = string.Format("{0}|||{1}|||{2}|||{3}", ,"房间1",,); // 格式为"房间号|||房间名|||总人数|||人数"(接收的时候使用string.split解析)
byte[] message = Encoding.UTF8.GetBytes(broadcastMessage);
udpSocket.SendTo(message, new IPEndPoint(IPAddress.Parse(item+""),udpPort));// 255表示广播地址
}
Thread.Sleep(); // 每一秒广播一次
}
private void OnApplicationQuit()
{
udpSocket.Close();
isRun = false;
}
}

Unity中使用C#实现UDP广播的更多相关文章

  1. Unity中接收服务器消息并广播事件的实现

    最近接触的项目,是一个棋牌游戏,棋牌游戏需要在前端进行一些操作,然后向服务器发送数据包,在服务器接收到客户端的数据后,会在服务端进行一系列的判断之后,然后发送给客户端一个返回数据,客户端接收到这个返回 ...

  2. Netty实战十三之使用UDP广播事件

    1.UDP的基础知识 我们将会把重点放在一个无连接协议即用户数据报协议(UDP)上,它通常用在性能至关重要并且能够容忍一定的数据报丢失的情况下. 面向连接的传输(如TCP)管理了两个网络端点之间的连接 ...

  3. 利用Docker技术实现UDP广播效果(网络编程python版)

    docker的安装见官方文档 我使用的系统为Ubuntu16.04 Ubuntu系统安装docker文档地址:https://docs.docker.com/engine/installation/l ...

  4. NetworkComms V3 之发送UDP广播消息

    NetworkComms网络通信框架序言 NetworkComms通信框架,是一款来自英国的c#语言编写的通信框架,历时6年研发,成熟稳定,性能可靠. NetworkComms v3目前只支持基本的U ...

  5. UDP广播问题

    http://bbs.csdn.net/topics/390218123 Broadcast Address(广播地址)是专门用于同时向网络中所有工作站进行发送的一个地址.在使用TCP/IP 协议的网 ...

  6. [C# 网络编程系列]专题七:UDP编程补充——UDP广播程序的实现

    转自:http://www.cnblogs.com/zhili/archive/2012/09/03/2666974.html 上次因为时间的关系,所以把上一个专题遗留下的一个问题在本专题中和大家分享 ...

  7. c# socket udp广播

    一.广播消息 由于Tcp是有连接的,所以不能用来发送广播消息.发送广播消息,必须用到Udp,Udp可以不用建立连接而发送消息.广播消息的目的IP地址是一种特殊IP地址,称为广播地址.广播地址由IP地址 ...

  8. 通过UDP广播实现Android局域网Peer Discovering

    本文是对个人笔记中内容的整理,部分代码及图片来自互联网,由于不好找到原始出处,所以未加注明. 如有痛感,联系删除. 本文将介绍以下知识点: TCP与UDP的区别: 单播.多播.广播: Java中实现U ...

  9. 【Netty】UDP广播事件

    一.前言 前面学习了WebSocket协议,并且通过示例讲解了WebSocket的具体使用,接着学习如何使用无连接的UDP来广播事件. 二.UDP广播事件 2.1 UDP基础 面向连接的TCP协议管理 ...

随机推荐

  1. .Net WebApi 支持跨域访问使用 Microsoft.AspNet.WebApi.Cors

    首先导入Cors库,通过程序包管理控制台导入 Install-Package Microsoft.AspNet.WebApi.Cors 引用库之后,我们需要进行简单的配置. 现在WebApiConfi ...

  2. 张高兴的 Windows 10 IoT 开发笔记:使用 MAX7219 驱动数码管

    This is a Windows 10 IoT Core project on the Raspberry Pi 2/3, coded by C#. GitHub:https://github.co ...

  3. 【洛谷】【线段树+位运算】P2574 XOR的艺术

    [题目描述:] AKN觉得第一题太水了,不屑于写第一题,所以他又玩起了新的游戏.在游戏中,他发现,这个游戏的伤害计算有一个规律,规律如下 1. 拥有一个伤害串为长度为n的01串. 2. 给定一个范围[ ...

  4. CVE-2014-4210SSRF漏洞分析

    直接定位SearchPublicRegistries.jsp文件,47行接受输入的变量. 结果输出位置在120行 SearchPublicRegistries.jsp引入com.bea.uddiexp ...

  5. Day5 JDBC

    JDBC的简介 Java  Database Connectivity:连接数据库技术. SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范(接口),使用同一套程序操作不同的数 ...

  6. maven3 下载列表

    https://archive.apache.org/dist/maven/maven-3/ Parent Directory - 3.0.4/ 2012-09-11 09:37 - 3.0.5/ 2 ...

  7. 关于Nanchtiy

    关于我 宇宙超级无敌蒟蒻一枚 爱玩游戏(LOL贼菜) 不爱刷题 不定时更新博客 福建某不知名市的某不知名高中的高二dog 偶尔看看动漫 欢迎加友链啦~ QQ:1468473741(会有妹子加吗?) 我 ...

  8. CentOS 安装第三方yum源

    yum install wget #安装下载工具 wget http://www.atomicorp.com/installers/atomic #下载 sh ./atomic #安装 yum che ...

  9. linux文件系统初始化过程(5)---加载initrd(下)

    一.目的 linux把文件分为常规文件.目录文件.软链接文件.硬链接文件.特殊文件(设备文件.管道文件.socket文件等)几种类型,分别对应不同的新建函数sys_open().sys_mkdir() ...

  10. OpenGL ES天空盒子效果

    一.理解 利用GLKBaseEffect,自定义顶点着色器和片元着色器,结合天空盒子,展示效果 二.技术代码 CCSkyBoxEffect:天空盒子效果类: CCSkyboxShader.vsh:顶点 ...