zoukankan      html  css  js  c++  java
  • u3d 多线程 网络

    开启一个线程做网络连接,和接收数据, 用event进行广播

    using UnityEngine;
    using System;
    using System.Threading;
    using System.Net;
    using System.Net.Sockets;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;
    
    public class NetComponent: MonoBehaviour
    {
        public static bool enable = true;
    
        Thread oThread;
    
        public static NetComponent instance { get; private set; }
    
        public List<string> bytelist = new List<string>();
        
        public event Action<String> handler;
    
        private GameNet gamenet;
        protected GameObject rootObject;
        
        void OnEnable(){
            instance = this;
        }
    
        void Awake(){
            instance = this;
        }
        
        void Start(){
            oThread = new Thread(new ThreadStart(NetComponent.instance.Beta));
            oThread.Start();
        }
        
        public static void SendMsg(string msg){
            if(NetComponent.instance.gamenet != null){
                NetComponent.instance.gamenet.send(msg);
            }
        }
    
        void Update(){
        }
    
        void OnDestory(){
            NetComponent.enable = false;
            oThread.Abort();
        }
        
        
        public void Beta()
        {
            gamenet = new GameNet();
            gamenet.start();
            gamenet.send("1");
            
            while(true){
                if(NetComponent.enable == false){
                    break;
                }
    
                try{
                    string v = gamenet.conrecv();
                    bytelist.Add(v);
                    
                } catch(SocketException e){
                    print(e.Message);
                    break;
                }
    
                if(bytelist.Count > 0 && handler != null){
                    print ( string.Join(",", bytelist.ToArray()) );
                    bytelist.Clear();
                }
                
            }
    
            gamenet.close();
            Thread.CurrentThread.Abort();
        }
    };
  • 相关阅读:
    传输对象模式
    服务定位器模式
    拦截过滤器模式
    前端控制器模式
    数据访问对象模式
    组合实体模式
    业务代表模式
    MVC 模式
    访问者模式
    模板模式
  • 原文地址:https://www.cnblogs.com/lightlfyan/p/4179693.html
Copyright © 2011-2022 走看看