当前位置: 首页 > wzjs >正文

iis 会影响 网站 速度品牌运营公司

iis 会影响 网站 速度,品牌运营公司,安庆市住房和城乡建设委员会网站,做金融量化的网站制作UDPNetMgr网络管理模块 这段代码定义了一个名为UDPNetMgr的 Unity 脚本类,用于管理 UDP 网络通信,它作为单例存在,在Awake方法中创建收发消息的线程,Update方法处理接收到的消息;StartClient方法启动客户端连接&a…

制作UDPNetMgr网络管理模块

这段代码定义了一个名为UDPNetMgr的 Unity 脚本类,用于管理 UDP 网络通信,它作为单例存在,在Awake方法中创建收发消息的线程,Update方法处理接收到的消息;StartClient方法启动客户端连接,ReceiveMsgSendMsg方法分别用于接收和发送消息,Send方法将消息加入发送队列,Close方法关闭套接字并发送退出消息,同时在脚本销毁时自动调用关闭操作

using System;
using System.Collections;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using UnityEngine;public class UDPNetMgr : MonoBehaviour
{ private static UDPNetMgr instance;public static UDPNetMgr Instance => instance;private EndPoint serverIpPoint;public Socket socket;private bool IsClose=true;public byte[] cacheBytes = new byte[512];//创建两个队列来收消息和发消息public Queue<BaseMsg> sendMsgQueue = new Queue<BaseMsg>();public Queue<BaseMsg> receiveMsgQueue = new Queue<BaseMsg>();void Awake(){instance = this;DontDestroyOnLoad(this.gameObject);//创建两个线程来执行收发消息ThreadPool.QueueUserWorkItem(ReceiveMsg);ThreadPool.QueueUserWorkItem(SendMsg);}// Update is called once per framevoid Update(){if(receiveMsgQueue .Count >0){BaseMsg basemsg = receiveMsgQueue.Dequeue();switch (basemsg ){case PlayerMsg msg:print(msg.playerID);print(msg.playerData .atk);print(msg.playerData .lev);print(msg.playerData .name);break;}}}//启动客户端Socket的方法public void StartClient(string ip,int port){if (!IsClose)return;//记录远端服务器的Ip和端口号serverIpPoint = new IPEndPoint(IPAddress.Parse(ip), port);IPEndPoint ipPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8081);try{socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);socket.Bind(ipPoint);IsClose = false;print("客户端网络启动");}catch (System.Exception e){print("启动客户端Socket失败" + e.Message);}}//接收消息的方法public void ReceiveMsg(object obj){EndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 0);int msgID;int nowIndex;int msgLength;while (socket!=null&&!IsClose){try{socket.ReceiveFrom(cacheBytes, ref ipEndPoint);//为了避免非服务器发来的骚扰消息if (!ipEndPoint.Equals(serverIpPoint))continue;//如果不是服务器发来的消息,就不处理了//处理服务器发来的消息nowIndex = 0;//解析IDmsgID = BitConverter.ToInt32(cacheBytes, nowIndex);nowIndex += 4;//解析消息长度msgLength = BitConverter.ToInt32(cacheBytes, nowIndex);nowIndex += 4;//解析消息体BaseMsg msg = null;switch (msgID){case 1001:msg = new PlayerMsg();//反序列化消息体msg.Reading(cacheBytes, nowIndex);break;}if (msg != null)receiveMsgQueue.Enqueue(msg);}catch (SocketException s){print("接收消息出问题" + s.SocketErrorCode + s.Message);}catch (System.Exception e){print("接收消息出问题(非网络问题)" + e.Message);}}}//发送消息的方法public void SendMsg(object obj){while (socket!=null&&!IsClose){if(sendMsgQueue .Count >0){try{socket.SendTo(sendMsgQueue.Dequeue().Writing(), serverIpPoint);}catch (SocketException e){print("发送消息失败" + e.SocketErrorCode + e.Message);}}}}public void Send(BaseMsg msg){sendMsgQueue.Enqueue(msg);}//关闭socketpublic void Close(){if(socket!=null){IsClose = true;quitMsg quitMsg = new quitMsg();//发送一个退出消息给服务器,让他移除记录socket.SendTo(quitMsg.Writing(), serverIpPoint);socket.Shutdown(SocketShutdown.Both);socket.Close();}}private void OnDestroy(){Close();}
}

启动UDP客户端

MainUDP类继承自MonoBehaviour,是一个 Unity 脚本。它的主要功能是在游戏开始时确保UDPNetMgr单例实例存在,然后启动 UDP 客户端并连接到指定的服务器地址和端口。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class MainUDP : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){if(UDPNetMgr .Instance ==null){GameObject obj = new GameObject("UdpNet");obj.AddComponent<UDPNetMgr>();}UDPNetMgr.Instance.StartClient(("127.0.0.1"), 8080);}// Update is called once per framevoid Update(){}
}

让客户端给服务器发消息

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class Lesson15 : MonoBehaviour
{public Button btn;// Start is called before the first frame updatevoid Start(){btn.onClick.AddListener(() =>{PlayerMsg playerMsg = new PlayerMsg();playerMsg.playerID = 1;playerMsg.playerData.atk = 888;playerMsg.playerData.lev = 999;playerMsg.playerData.name = "DamnF客户端发来的消息";UDPNetMgr.Instance.Send(playerMsg);});}// Update is called once per framevoid Update(){}
}

实现客户端和服务器同步通信

运行服务器,启动客户端,使客户端和服务器实现UDP同步通信

http://www.dtcms.com/wzjs/500760.html

相关文章:

  • 做个网站费用拓客软件哪个好用
  • wordpress主题adavaseo流程
  • 建立石墨碳素网站怎么做天津关键词优化网站
  • wordpress 网站静态页面网站推广策划思路的内容
  • 广州有什么互联网公司优化大师电脑版
  • 苏州网站制作排名优化网站设计培训
  • 企业网站备案多少钱seo外包多少钱
  • wordpress页面归档系统清理优化工具
  • 网站建设平台推荐企业培训体系搭建
  • 胶州网站建设平台网站优化和网站推广
  • 百度云bch 建设网站网页设计框架图
  • 网站开发的母的目的和意义.百度网络推广
  • web全栈开发优化推广网站淄博
  • 福州建设公司名单优化排名推广教程网站
  • 使用WordPress快速建站视频金戈西地那非片
  • b2b网站建设需要多少费用上海网络推广平台
  • 网站建设艾金手指六六12兰州做网站的公司
  • 网站建设研究的意义百度收录提交入口
  • 专业营销型网站建设费用微信推广平台怎么做
  • 电子商务网站建设新闻百度导航下载安装手机导航
  • 百度网站内容交换友情链接的注意事项
  • 茂名住房和城乡建设部网站seo服务顾问
  • 医疗器械分为哪三类惠州百度seo排名
  • 重庆智慧团建网站登录平台招聘网络营销推广人员
  • 网站首页的logo这么修改如何提高网站排名的方法
  • 网站建设合同的要素及签订注意事项浙江seo
  • 有一个网站自己做链接获取朋友位置网络广告策划方案
  • 公司网站建设计划书seo关键词怎么优化
  • 有哪些做网站好的公司竞价外包运营
  • 成都app定制开发武汉百度快照优化排名