Пример #1
0
    private void Socket_Head(IAsyncResult ar)
    {
        try{
//			Debug.LogError ("Socket_Head -->> " + ar.AsyncState);
            int len = socket.EndReceive(ar);
            if (len < 1)
            {
                return;
            }
            if (bytes.Length < VoPackage.HEAD_LEN)
            {
                socket.BeginReceive(bytes, bytes.Length, VoPackage.HEAD_LEN - bytes.Length, SocketFlags.None, new AsyncCallback(Socket_Head), current);
            }
            else
            {
                int bodyLen = System.BitConverter.ToInt32(bytes, 0);
                current = new VoPackage(bodyLen);
                socket.BeginReceive(current.body, current.readLen, current.bodyLen - current.readLen, SocketFlags.None, new AsyncCallback(Socket_Body), socket);
            }
        }catch (Exception ee) {
            Interlocked.Exchange(ref isConnectStatus, -1);
//			Debug.LogError ("Socket_Head -->> " + ee.Message);
        }
    }
Пример #2
0
    private void Socket_Check(float time)
    {
        if (test)
        {
            if (package.Count >= 2)
            {
                test = false;
            }
        }
        if (test)
        {
            return;
        }
        index++;
//		Debug.LogError ("Socket_Check -->> :: " + package.Count);
        if (package.Count >= 1)
        {
            count    = package.Count;
            maxCount = Math.Max(count, maxCount);
//            long offset = ( System.DateTime.Now.Ticks - tick ) / 10000;

            //			if (0 != tick) {
            //				MediatorSystem.log("socketUpdate", offset);
            //
            //				if (offset >= 150) {
            //					MediatorSystem.log("socket大", offset);
            //				}
            //
            //				if (offset <= 50) {
            //					MediatorSystem.log("socket小", offset);
            //				}
            //
            //
            //			}

            tick = System.DateTime.Now.Ticks;
        }
//		Debug.LogError ("Socket_Check");
        MediatorSystem.log("count", package.Count + "   " + count + "    " + maxCount);
        while (package.Count != 0)
        {
            VoPackage vo = null;
            lock (package) {
                vo = package[0];
                package.Remove(vo);
            }
            if (vo.isClear)
            {
//                LogMessage.instance.text.text += "此vo已经被清除过了!";
                continue;
            }
            VoSocket v = new VoSocket();
//            MediatorSystem.timeStart("SockettoDatas");
            v.toDatas(vo.body);
//            MediatorSystem.getRunTime("SockettoDatas");
//			Debug.LogError ("re -->> :: " + v.method);
//			if (v.method == NetBase.SOCKET_LOGIN) {
//				Check_Ping ();
//			}
//            if(v.method != NetBase.SOCKET_PING && v.method != "sync")
//                Log.debug("SocketReceive[" + this.ip + "]:" + JsonUtility.ToJson(v));
            if (!vo.isClear)
            {
                if (call.ContainsKey(v.method))
                {
//					Debug.LogError (v.method);
                    SocketListener sl = call[v.method];
                    //try {
//                    MediatorSystem.timeStart("execSocketData");
                    sl.Excute(v);
//                    MediatorSystem.getRunTime("execSocketData");
                    //} catch(Exception e) {
                    //    Debug.Log(e.HelpLink);
                    //}
                }
            }
            else
            {
//                Log.debug("Socket Data Is Clear");
            }
            vo.Clear();
        }
        if (index % 500 == 0)
        {
            maxCount = 0;
            tick2    = 0;
        }
    }