/// <summary>
    /// 丢失链接
    /// </summary>
    void OnDisconnected(DisType dis, string msg)
    {
        sockteClientState = netState.DisConnected;
        Close();   //关掉客户端链接
        int protocal = dis == DisType.Exception ?
                       Protocal.Exception : Protocal.Disconnect;

        ByteBuffer buffer = new ByteBuffer();

        buffer.WriteShort((ushort)protocal);
        lock (NetworkManager.sEvents)
        {
            NetworkManager.AddEvent(protocal, buffer);
        }
        //Debug.LogError("Connection was closed by the server:>" + msg + " Distype:>" + dis);
    }
 /// <summary>
 /// 连接服务器
 /// </summary>
 void ConnectServer(string host, int port)
 {
     client                = null;
     client                = new TcpClient();
     client.SendTimeout    = 1000;
     client.ReceiveTimeout = 1000;
     client.NoDelay        = true;
     try {
         client.BeginConnect(host, port, new AsyncCallback(OnConnect), null);
     } catch (Exception e) {
         Close();
         //Debug.LogError(e.Message);
         sockteClientState = netState.None;
         lock (NetworkManager.sEvents)
         {
             NetworkManager.AddEvent(Protocal.ConnectFailer, new ByteBuffer());
         }
     }
 }
    private void start()
    {
        while (true)
        {
            if (sockteClientState == netState.None)
            {
                Thread.Sleep(1000);
            }
            else if (sockteClientState == netState.ToConnect)
            {
                SendConnect();
                Thread.Sleep(100);
            }
            else if (sockteClientState == netState.Connected)
            {
                //send message
                lock(NetworkManager.toSendBuffers)
                {
                    while (NetworkManager.toSendBuffers.Count > 0)
                    {
                        ByteBuffer btbuffer = NetworkManager.toSendBuffers.Dequeue();
                        if (btbuffer != null)
                        {
                            SendMessage(btbuffer);
                        }
                    }
                }

                //recv messsage
                readMessage();
            }
            else if (sockteClientState == netState.ToDisconnect)
            {
                OnRemove();
                sockteClientState = netState.DisConnected;
                return;
            }
            Console.WriteLine("socket running!!");
        }
    }
    private void start()
    {
        while (true)
        {
            if (sockteClientState == netState.None)
            {
                Thread.Sleep(1000);
            }
            else if (sockteClientState == netState.ToConnect)
            {
                SendConnect();
                Thread.Sleep(100);
            }
            else if (sockteClientState == netState.Connected)
            {
                //send message
                lock (NetworkManager.toSendBuffers)
                {
                    while (NetworkManager.toSendBuffers.Count > 0)
                    {
                        ByteBuffer btbuffer = NetworkManager.toSendBuffers.Dequeue();
                        if (btbuffer != null)
                        {
                            SendMessage(btbuffer);
                        }
                    }
                }

                //recv messsage
                readMessage();
            }
            else if (sockteClientState == netState.ToDisconnect)
            {
                OnRemove();
                sockteClientState = netState.DisConnected;
                return;
            }
            Console.WriteLine("socket running!!");
        }
    }
 /// <summary>
 /// Connect server callback
 /// </summary>
 void OnConnect(IAsyncResult asr)
 {
     if (client.Connected)// socket has connected to server.
     {
         lock (NetworkManager.sEvents)
         {
             NetworkManager.AddEvent(Protocal.Connect, new ByteBuffer());
         }
         sockteClientState = netState.Connected;
     }
     else
     {
         //Close();
         if (sockteClientState == netState.ToConnect)
         {
             lock (NetworkManager.sEvents)
             {
                 NetworkManager.AddEvent(Protocal.ConnectFailer, new ByteBuffer());
             }
         }
         sockteClientState = netState.None;
     }
 }
    /// <summary>
    /// 丢失链接
    /// </summary>
    void OnDisconnected(DisType dis, string msg) {
        sockteClientState = netState.DisConnected;
        Close();   //关掉客户端链接
        int protocal = dis == DisType.Exception ?
        Protocal.Exception : Protocal.Disconnect;

        ByteBuffer buffer = new ByteBuffer();
        buffer.WriteShort((ushort)protocal);
        lock (NetworkManager.sEvents)
        {
            NetworkManager.AddEvent(protocal, buffer);
        }
        //Debug.LogError("Connection was closed by the server:>" + msg + " Distype:>" + dis);
    }
 /// <summary>
 /// Connect server callback
 /// </summary>
 void OnConnect(IAsyncResult asr)
 {
     if (client.Connected)// socket has connected to server.
     {
         lock (NetworkManager.sEvents)
         {
             NetworkManager.AddEvent(Protocal.Connect, new ByteBuffer());
         }
         sockteClientState = netState.Connected;
     }
     else
     {
         //Close();
         if (sockteClientState == netState.ToConnect)
         {
             lock (NetworkManager.sEvents)
             {
                 NetworkManager.AddEvent(Protocal.ConnectFailer, new ByteBuffer());
             }
         }
         sockteClientState = netState.None;
     }
 }
 /// <summary>
 /// 连接服务器
 /// </summary>
 void ConnectServer(string host, int port) {
     client = null;
     client = new TcpClient();
     client.SendTimeout = 1000;
     client.ReceiveTimeout = 1000;
     client.NoDelay = true;
     try {
         client.BeginConnect(host, port,new AsyncCallback(OnConnect),null);
     } catch (Exception e) {
         Close();
         //Debug.LogError(e.Message);
         sockteClientState = netState.None;
         lock (NetworkManager.sEvents)
         {
             NetworkManager.AddEvent(Protocal.ConnectFailer, new ByteBuffer());
         }
     }
 }