Unity中使用C#实现UDP广播
2024-10-15 09:22:44
没有系统的学习过网络,想做联机游戏还真是费劲,想做在局域网内实现自动搜索服务器的功能,然后就想到了使用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;
}
}
最新文章
- 解决mysql卸载后无法从新安装,卡在最后一步的问题
- tomcat之Session的管理
- sql 日期格式汇总
- Sublime Text 3编辑器安装
- cocos2dx 2.x版本:简化提炼tolua++绑定自定义类到lua中使用
- PHP超大文件下载,断点续传下载
- aps.net 用ajax 读取服务端值
- 关于 diff 和patch
- Linux 下SVN报错No repository found in &#39;svn://210.16.191.230/huandong_project&#39;
- 日志框架elk 搭建
- Java执行js代码
- 02-01 Java关键字、标识符、注释、常量和进制问题、变量和数据类型
- Unity Shader 设置纹理采样tex2D过滤方式
- linux系统socket通信编程2
- hook Extending the Framework Core
- Spark Worker原理和源码剖析解密:Worker工作流程图、Worker启动Driver源码解密、Worker启动Executor源码解密等
- It企业的上市与退市
- 美团HD(7)-添加取消搜索按钮
- 【Android学习】Merge 优化布局
- POJ 1703 Find them, Catch them 并查集的应用