Пример #1
0
 protected override void DecodePackage(NetReader reader)
 {
     actionResult["num"]    = reader.getInt();
     actionResult["level"]  = reader.getInt();
     actionResult["target"] = reader.getInt();
     WebLogic.Instance.RadioCallBack(actionResult);
 }
Пример #2
0
    static int recordEnd(IntPtr L)
    {
        NetReader reader = (NetReader)LuaScriptMgr.GetNetObjectSelf(L, 1, "NetReader");

        reader.recordEnd();
        return(0);
    }
        public override void Connect( IPAddress address, int port )
        {
            socket = new Socket( address.AddressFamily, SocketType.Stream, ProtocolType.Tcp );
            try {
                socket.Connect( address, port );
            } catch( SocketException ex ) {
                ErrorHandler.LogError( "connecting to server", ex );
                game.Disconnect( "&eUnable to reach " + address + ":" + port,
                                "Unable to establish an underlying connection" );
                Dispose();
                return;
            }

            NetworkStream stream = new NetworkStream( socket, true );
            reader = new NetReader( stream );
            writer = new NetWriter( stream );
            gzippedMap = new FixedBufferStream( reader.buffer );
            envMapAppearanceVer = 2;
            blockDefinitionsExtVer = 2;
            needD3Fix = false;

            Disconnected = false;
            receivedFirstPosition = false;
            lastPacket = DateTime.UtcNow;
            game.WorldEvents.OnNewMap += OnNewMap;

            MakeLoginPacket( game.Username, game.Mppass );
            SendPacket();
            lastPacket = DateTime.UtcNow;
        }
Пример #4
0
        void HandleDefineBlockCommonEnd(NetReader reader, byte shape, byte id)
        {
            BlockInfo info      = game.BlockInfo;
            byte      blockDraw = reader.ReadUInt8();

            if (shape == 0)
            {
                blockDraw = DrawType.Sprite;
            }
            info.LightOffset[id] = info.CalcLightOffset(id);

            byte fogDensity = reader.ReadUInt8();

            info.FogDensity[id] = fogDensity == 0 ? 0 : (fogDensity + 1) / 128f;
            info.FogColour[id]  = new FastColour(
                reader.ReadUInt8(), reader.ReadUInt8(), reader.ReadUInt8());
            info.Tinted[id] = info.FogColour[id] != FastColour.Black && info.Name[id].IndexOf('#') >= 0;

            info.SetBlockDraw(id, blockDraw);
            info.CalcRenderBounds(id);
            info.UpdateCulling(id);

            game.Events.RaiseBlockDefinitionChanged();
            info.DefinedCustomBlocks[id >> 5] |= (1u << (id & 0x1F));
        }
Пример #5
0
    public void REC_NewLocalPlayer(NetReader reader)
    {
        int       playerNumber = reader.ReadInt();
        NetworkID vehicleID    = NetworkID.GetDataFromBytes(reader);

        // create local player mapping
        LocalPlayer newPlayer = new LocalPlayer();

        newPlayer.playerNumber = playerNumber;
        newPlayer.vehicleID    = vehicleID;
        Debug.Log(vehicleID);


        // TODO assign the vehicle
        NetObjectID id = NetworkManager.GetObjectForID(vehicleID);

        Debug.Log(id);
        BaseCar car = id.GetComponent <BaseCar>();

        // assign our vehicle to follow
        Debug.Log("Got local player info from server!");
        localPlayers.Add(newPlayer);

        Camera.main.GetComponent <RaceCamera>().SetCameraTarget(car.thisTransform);

        HasClient = true;
    }
Пример #6
0
    protected override void DecodePackage(NetReader reader)
    {
        if (reader != null && reader.StatusCode == 0)
        {
            actionResult = new ActionResult();
            byte[] data = reader.Buffer;
            actionResult["data"] = data;

            if (data.Length > 4)
            {
                int    bodyLen = data.Length - 4;
                byte[] stc     = new byte[4];
                byte[] body    = new byte[bodyLen];
                Buffer.BlockCopy(data, 0, stc, 0, 4);
                Buffer.BlockCopy(data, 4, body, 0, bodyLen);
                STC eStc = (STC)BitConverter.ToInt32(stc, 0);

                Action <byte[]> callback;
                if (NetWork.mRegsterBytesSTC.TryGetValue(eStc, out callback))
                {
                    callback(body);
                }
            }
        }
    }
Пример #7
0
 internal void ReadDefinePartPacket(NetReader reader)
 {
     ushort  partId = reader.ReadUInt16();
     byte    type   = reader.ReadUInt8();
     Vector3 min    = ReadVector(reader);
     Vector3 max    = ReadVector(reader);
 }
Пример #8
0
            public static Base Parse(Client client, Coob coob)
            {
                NetReader reader = client.Reader;
                var       shoot  = new Shoot(client);

                shoot.EntityId   = reader.ReadUInt64();
                shoot.ChunkX     = reader.ReadInt32();
                shoot.ChunkY     = reader.ReadInt32();
                shoot.something5 = reader.ReadUInt32();
                reader.ReadBytes(4);
                shoot.Position    = reader.ReadQVector3();
                shoot.something13 = reader.ReadUInt32();
                shoot.something14 = reader.ReadUInt32();
                shoot.something15 = reader.ReadUInt32();
                shoot.Velocity    = reader.ReadVector3();
                shoot.something19 = reader.ReadSingle();
                shoot.something20 = reader.ReadSingle();
                shoot.something21 = reader.ReadSingle();
                shoot.something22 = reader.ReadSingle();
                shoot.something23 = reader.ReadUInt32();
                shoot.something24 = reader.ReadByte();
                reader.ReadBytes(3);
                shoot.something25 = reader.ReadUInt32();
                shoot.something26 = reader.ReadByte();
                reader.ReadBytes(3);
                shoot.something27 = reader.ReadUInt32();
                shoot.something28 = reader.ReadUInt32();
                coob.World.ShootPackets.Add(shoot);
                return(shoot);
            }
Пример #9
0
 protected override void DecodePackage(NetReader reader)
 {
     if (reader != null && reader.StatusCode == 0)
     {
         Debug.Log("1000 response ok.");
     }
 }
Пример #10
0
 public IProtocol(Game game)
 {
     this.game = game;
     net       = (NetworkProcessor)game.Server;
     reader    = net.reader;
     writer    = net.writer;
 }
Пример #11
0
        void HandleDefineBlockCommonEnd(NetReader reader, byte shape, BlockID block)
        {
            byte blockDraw = reader.ReadUInt8();

            if (shape == 0)
            {
                BlockInfo.SpriteOffset[block] = blockDraw;
                blockDraw = DrawType.Sprite;
            }
            BlockInfo.LightOffset[block] = BlockInfo.CalcLightOffset(block);

            byte fogDensity = reader.ReadUInt8();

            BlockInfo.FogDensity[block] = fogDensity == 0 ? 0 : (fogDensity + 1) / 128f;
            BlockInfo.FogColour[block]  = new FastColour(
                reader.ReadUInt8(), reader.ReadUInt8(), reader.ReadUInt8());
            BlockInfo.Tinted[block] = BlockInfo.FogColour[block] != FastColour.Black && BlockInfo.Name[block].IndexOf('#') >= 0;

            BlockInfo.SetBlockDraw(block, blockDraw);
            BlockInfo.CalcRenderBounds(block);
            BlockInfo.UpdateCulling(block);

            game.Inventory.AddDefault(block);
            BlockInfo.SetCustomDefined(block, true);
            game.Events.RaiseBlockDefinitionChanged();
        }
Пример #12
0
 /// <summary>
 /// http respond
 /// </summary>
 /// <param name="package"></param>
 public void OnHttpRespond(HttpPackage package)
 {
     if (package.error != null)
     {
         OnNetError(package.ActionId, package.error);
     }
     else if (package.IsOverTime)
     {
         OnNetTimeOut(package.ActionId);
     }
     else
     {
         NetReader reader    = package.Reader;
         byte[]    buffBytes = package.GetResponse();
         if (reader.pushNetStream(buffBytes, NetworkType.Http, NetWriter.ResponseContentType))
         {
             if (reader.Success)
             {
                 OnRespond(package);
             }
             else
             {
                 OnNetError(package.ActionId, reader.Description);
             }
         }
     }
 }
Пример #13
0
 protected override void DecodePackage(NetReader reader)
 {
     responsePack = JsonUtil.DeserializeObject <GameSettlementResp>(reader.readString());
     if (responsePack != null)
     {
     }
 }
Пример #14
0
 protected override void DecodePackage(NetReader reader)
 {
     if (reader.StatusCode == 0)
     {
         if (isCustom)
         {
             //自定对象格式解包
             _responseData = ProtoBufUtils.Deserialize <Response1001Pack>(reader.Buffer);
         }
         else
         {
             //默认Scut流格式解包
             _responseData           = new Response1001Pack();
             _responseData.PageCount = reader.getInt();
             int nNum = reader.getInt();
             _responseData.Items = new List <RankData>();
             for (int i = 0; i < nNum; i++)
             {
                 reader.recordBegin();
                 RankData item = new RankData();
                 item.UserName = reader.readString();
                 item.Score    = reader.getInt();
                 reader.recordEnd();
                 _responseData.Items.Add(item);
             }
         }
     }
 }
Пример #15
0
 protected override void DecodePackage(NetReader reader)
 {
     responsePack = new ResponseDefaultPacket()
     {
         Result = reader.getInt()
     };
 }
Пример #16
0
 void Init()
 {
     if (hasInit)
     {
         return;
     }
     writer    = new NetWriter();
     reader    = new NetReader();
     writeData = new byte[NetworkCore.MAX_DATA_SIZE];
     sceneIDs  = new Pair <NetObjectID, bool> [256];
     gameIDs   = new Pair <NetObjectID, bool> [256];
     for (int i = 0; i < 256; i++)
     {
         sceneIDs[i] = new Pair <NetObjectID, bool>();
         gameIDs[i]  = new Pair <NetObjectID, bool>();
     }
     HasJoinedGame = false;
     // load up all the network functions
     RegisterAllFunctions();
     // load up the prefabs
     RegisterAllPrefabs();
     // link into the scene loading
     SceneManager.sceneLoaded += OnSceneLoaded;
     // notify all objects in this scene that the network scene has loaded
     //OnSceneLoaded(SceneManager.GetActiveScene(), LoadSceneMode.Single);
     hasInit = true;
 }
Пример #17
0
 protected override void DecodePackage(NetReader reader)
 {
     if (reader != null && reader.StatusCode == 0)
     {
         Debug.Log("1000 response ok.");
     }
 }
Пример #18
0
        // Attempts to connect to a specified server with a given connection message
        public bool Connect(IPEndPoint Server, ConnectMessage ConnectionMessage)
        {
            // Initialise socket for TCP/IP communications
            Inner = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            try
            {
                // Try to connect
                Inner.Connect(Server);

                // Set up IO streams around the socket
                Stream = new NetworkStream(Inner);
                In     = new NetReader(Stream);
                Out    = new NetWriter(Stream);

                // Send off the initial connection message
                Send(ConnectionMessage);

                // Begin reading from the Server
                StartRead();

                return(true);
            }
            catch
            {
                return(false);
            }
        }
Пример #19
0
 protected override void DecodePackage(NetReader reader)
 {
     if (reader.StatusCode == 0)
     {
         if (isCustom)
         {
             //自定对象格式解包
             _responseData = ProtoBufUtils.Deserialize<Response1001Pack>(reader.Buffer);
         }
         else
         {
             //默认Scut流格式解包
             _responseData = new Response1001Pack();
             _responseData.PageCount = reader.getInt();
             int nNum = reader.getInt();
             _responseData.Items = new List<RankData>();
             for (int i = 0; i < nNum; i++)
             {
                 reader.recordBegin();
                 RankData item = new RankData();
                 item.UserName = reader.readString();
                 item.Score = reader.getInt();
                 reader.recordEnd();
                 _responseData.Items.Add(item);
             }
         }
     }
 }
    void RecvClientInputs(NetReader reader)
    {
        // find the correct client for this input
        ClientInputMapping record = clientInputs[reader.connectionId];

        if (record == null)
        {
            Debug.LogWarning("no client input record exists for client " + reader.connectionId);
            return;
        }



        // read the data
        byte clientTick = reader.ReadByte();
        byte numPlayers = reader.ReadByte();

        for (int i = 0; i < numPlayers; i++)
        {
            PlayerInput input = new PlayerInput();
            input.tick       = clientTick;
            input.driveInput = reader.ReadFloat();
            input.steerInput = reader.ReadFloat();
            input.useInput   = reader.ReadFloat();
            ClientInputMapping mapping = clientInputs[reader.connectionId];
            mapping.pairs[i].pPlayer.AddInput(input);
        }
    }
Пример #21
0
    protected override void DecodePackage(NetReader reader)
    {
        responsePack = new Response1004Packet()
        {
            Result = reader.getInt()
        };
        if (responsePack.SuccessOrUpdate)
        {
            responsePack.LoginResp = JsonUtil.DeserializeObject <LoginResp>(reader.readString());
            if (responsePack.Success)
            {
                UIModelMgr.Instance.GetModel <UIMainModel>().SetShareInfos(responsePack.LoginResp.ShareInfos);
                NetWriter.setUserID(ulong.Parse(responsePack.LoginResp.UserId));
                NetWriter.setSessionID(responsePack.LoginResp.SessionId);

                Debug.Log("SessionId ================= " + responsePack.LoginResp.SessionId);

                Net.Instance.ReBuildHearbeat();
                UIModelMgr.Instance.GetModel <UIGameModel>().ClearGameEndDatas();
            }
            else
            {
                UIDialogMgr.Instance.ShowDialog(responsePack.Result, delegate(GameObject go) { Application.OpenURL(responsePack.LoginResp.ApkUpdateWebsite); });
            }
        }
        else
        {
            UIDialogMgr.Instance.ShowDialog(responsePack.Result);
        }
    }
Пример #22
0
    internal static TempObjID GetDataFromBytes(NetReader reader)
    {
        int id   = reader.ReadInt();
        int pref = reader.ReadInt();

        return(new TempObjID(id, pref));
    }
Пример #23
0
 /// <summary>
 /// http respond
 /// </summary>
 /// <param name="package"></param>
 /// <param name="userdata"></param>
 public void OnHttpRespond(HttpPackage package, object userdata)
 {
     if (package.error != null)
     {
         OnNetError(package.Tag, package.error.ToString());
     }
     else if (package.overTime)
     {
         OnNetTimeOut(package.Tag);
     }
     else
     {
         NetReader reader = new NetReader();
         reader.pushNetStream(package.buf, NetworkType.Http);
         ServerResponse.ResponseData data = null;
         bool bRet = true;
         if (reader.ActionId != 0)//获取服务器列表比较特殊没有协议头
         {
             if (CommonCallback != null)
             {
                 bRet = CommonCallback(reader);
             }
         }
         if (bRet)
         {
             data = ServerResponse.Instance.GetData(reader);
             ProcessBodyData(data, userdata, package.FuncCallback);
         }
         reader = null;
     }
 }
Пример #24
0
 /// <summary>
 /// [系统邮件]获取系统邮件
 /// </summary>
 private IResponse Decode_1000(NetReader reader)
 {
     if (reader.getInt() > 0)
     {
     }
     return(new ScoreObject());
 }
Пример #25
0
    void CL_RemoveNetObject(NetReader reader)
    {
        TempObjID objID = TempObjID.GetDataFromBytes(reader);

        Debug.Log("removing object with id " + objID.IDNum);
        RemoveLocalNetObject(objID);
    }
Пример #26
0
 protected override void DecodePackage(NetReader reader)
 {
     responsePack = new Response1002Packet()
     {
         PassportID = reader.readString()
     };
 }
Пример #27
0
        public static Message ReadMessage(NetReader Reader)
        {
            try
            {
                if (MessageTypes == null)
                {
                    RegenMessageTypes();         // Load message classes if necessary
                }
                string Id = Reader.ReadString(); // Read the type

                foreach (Type t in MessageTypes)
                {
                    if (t.Name == Id) // Found the right class
                    {
                        // Create an object of the class, deserialise to it and return
                        Message m = (Message)Activator.CreateInstance(t);
                        m.Deserialise(Reader);
                        return(m);
                    }
                }

                throw new Exception("Invalid Type received"); // No matching class found
            }
            catch (MissingMethodException e)
            {
                // MissingMethodException is thrown if a subclass of Message can't be constructed
                throw new Exception("All Message subclasses must define a public parameterless constructor.", e);
            }
        }
Пример #28
0
    protected override void DecodePackage(NetReader reader)
    {
        string msgPush = reader.readString();

        //UnityEngine.Debug.logger.Log();
        EventService.Instance.GetEvent <Action2006Event>().Publish(msgPush);
        Net.Instance.ReBuildHearbeat();
    }
Пример #29
0
 internal void ReadRotationPacket(NetReader reader)
 {
     ushort     partId = reader.ReadUInt16();
     byte       order  = reader.ReadUInt8();
     RotateData rotX   = ReadRotateData(reader);
     RotateData rotY   = ReadRotateData(reader);
     RotateData rotZ   = ReadRotateData(reader);
 }
Пример #30
0
 protected override void DecodePackage(NetReader reader)
 {
     actionResult["player1"] = reader.readString();
     actionResult["player2"] = reader.readString();
     actionResult["player3"] = reader.readString();
     actionResult["player4"] = reader.readString();
     WebLogic.Instance.RadioCallBack(actionResult);
 }
Пример #31
0
    public static NetworkID GetDataFromBytes(NetReader reader)
    {
        NetworkID id = new NetworkID();

        id.idNumber = reader.ReadByte();
        id.type     = (NetworkIDType)reader.ReadByte();
        return(id);
    }
Пример #32
0
    /// <summary> 
    /// [系统邮件]获取系统邮件 
    /// </summary> 
    private IResponse Decode_1000(NetReader reader)
    {
        if (reader.getInt() > 0)
        {

        }
        return new ScoreObject();
    }
Пример #33
0
 protected override void DecodePackage(NetReader reader)
 {
     responsePack = JsonUtil.DeserializeObject <GameEndActionResp>(reader.readString());
     if (responsePack != null)
     {
         GameLogicMgr.Instance.OperateGameEnd(responsePack);
     }
 }
Пример #34
0
    protected override void DecodePackage(NetReader reader)
    {
        LogicMsg.AskAddRoomResp resp = LogicMsg.AskAddRoomResp.Parser.ParseFrom(reader.Buffer);

        m_result          = new ActionResult();
        m_result["State"] = resp.State;
        Debug.Log("resp.State: " + resp.State);
    }
Пример #35
0
 protected override void DecodePackage(NetReader reader)
 {
     //Debug.Log("Action1001: DecodePackage()");
     if (reader.StatusCode == 0)
     {
         //自定对象格式解包
         //_responseData = ProtoBufUtils.Deserialize<MessagePack>(reader.Buffer);
     }
 }
Пример #36
0
    protected override void DecodePackage(NetReader reader)
    {
        actionResult = new ActionResult();
        actionResult["passportID"] = reader.readString();
        actionResult["password"] = reader.readString();

        //TODO:登录服务器获取账号
        //var passport = reader.readValue<Passport>();
        //actionResult["passportID"] = passport.PassportId;
        //actionResult["password"] = passport.Password;
    }
Пример #37
0
 protected override void DecodePackage(NetReader reader)
 {
     if (reader.StatusCode == 0)
     {
         _obj = ProtoBufUtils.Deserialize<ShareEntityProto>(reader.Buffer);
     }
     else
     {
         UnityEngine.Debug.LogError(this.GetType() + ".DecodePackage(): reader.StatusCode = " + reader.StatusCode);
     }
 }
Пример #38
0
 protected override void DecodePackage(NetReader reader)
 {
     if (reader.StatusCode == 0)
     {
         _msg = ProtoBufUtils.Deserialize<LoginMessage>(reader.Buffer);
     }
     else
     {
         Debug.LogError(this.GetType() + ".DecodePackage(): reader.StatusCode = " + reader.StatusCode);
     }
 }
Пример #39
0
 /// <summary>
 /// 尝试解Body包
 /// </summary>
 /// <param name="reader"></param>
 /// <returns></returns>
 public bool TryDecodePackage(NetReader reader)
 {
     try
     {
         DecodePackage(reader);
         return true;
     }
     catch (Exception ex)
     {
         Debug.Log(string.Format("Action {0} decode package error:{1}", ActionId, ex));
         return false;
     }
 }
Пример #40
0
 protected override void DecodePackage(NetReader reader)
 {
     //Debug.Log("Action1000: DecodePackage()");
     if (reader.StatusCode == 0)
     {
         //自定对象格式解包
         //_responseData = ProtoBufUtils.Deserialize<MessagePack>(reader.Buffer);
     }
     else
     {
         Debug.LogError(this.GetType() + ".DecodePackage(): reader.StatusCode = " + reader.StatusCode);
     }
 }
Пример #41
0
 protected override void DecodePackage(NetReader reader)
 {
     actionResult = new ActionResult();
     //默认Scut流格式解包
     actionResult["RoleID"] = reader.getInt();
     actionResult["RoleName"] = reader.readString();
     actionResult["HeadImg"] = reader.readString();
     actionResult["Sex"] = reader.getByte();
     actionResult["LvNum"] = reader.getInt();
     actionResult["ExperienceNum"] = reader.getInt();
     actionResult["LifeNum"] = reader.getInt();
     actionResult["LifeMaxNum"] = reader.getInt();
     GameSetting.Instance.RoleName = actionResult.Get<string>("RoleName");
 }
Пример #42
0
 protected override void DecodePackage(NetReader reader)
 {
     actionResult = new ActionResult();
     //默认Scut流格式解包
     actionResult["SessionID"] = reader.readString();
     actionResult["UserID"] = reader.readString();
     actionResult["UserType"] = reader.getInt();
     actionResult["LoginTime"] = reader.readString();
     actionResult["GuideID"] = reader.getInt();
     actionResult["PassportId"] = reader.readString();
     actionResult["RefeshToken"] = reader.readString();
     actionResult["QihooUserID"] = reader.readString();
     actionResult["Scope"] = reader.readString();
     NetWriter.setUserID(ulong.Parse(actionResult["UserID"].ToString()));
     NetWriter.setSessionID(actionResult.Get<string>("SessionID"));
 }
Пример #43
0
 public IResponse GetResponse(NetReader reader, int ActionId)
 {
     IResponse r = null;
     switch (ActionId)
     {
         case 1000:
             r = Decode_1000(reader);
             break;
         case 1001:
             r = Decode_1001(reader);
             break;
         default:
             r = null;
             break;
     }
     return r;
 }
Пример #44
0
 protected override void DecodePackage(NetReader reader)
 {
     if (!reader.Success)
     {
         Debug.LogError(string.Format("Action {0} error {1}-{2}", reader.ActionId, reader.StatusCode, reader.Description));
         return;
     }
     actionResult = new ActionResult();
     //默认Scut流格式解包
     actionResult["RoleID"] = reader.getInt();
     actionResult["RoleName"] = reader.readString();
     actionResult["HeadImg"] = reader.readString();
     actionResult["Sex"] = reader.getByte();
     actionResult["LvNum"] = reader.getInt();
     actionResult["ExperienceNum"] = reader.getInt();
     actionResult["LifeNum"] = reader.getInt();
     actionResult["LifeMaxNum"] = reader.getInt();
     GameSetting.Instance.RoleName = actionResult.Get<string>("RoleName");
 }
Пример #45
0
    private IResponse Decode_1001(NetReader reader)
    {
        Resopnse_1001 ret = null;
        if (reader.StatusCode == 0)
        {
            ret = new Resopnse_1001();
            ret.PageCount = reader.getInt();
            int nNum = reader.getInt();
            ret.items = new List<Item>();
            for (int i = 0; i < nNum; i ++ )
            {
                reader.recordBegin();
                Item item = new Item();
                item.UserName = reader.readString();
                item.Score = reader.getInt();
                reader.recordEnd();
                ret.items.Add(item);
            }

        }
        return ret;
    }
Пример #46
0
    protected override void DecodePackage(NetReader reader)
    {
        if (!reader.Success)
        {
            Debug.LogError(string.Format("Action {0} error {1}-{2}", reader.ActionId, reader.StatusCode, reader.Description));
            return;
        }
        actionResult = new ActionResult();
        //默认Scut流格式解包
        int  length = reader.Buffer.Length;
        while (reader.CurrentPos < reader.Buffer.Length)
        {
            int count = reader.getInt();
            length -= count;
            StaticSever server = new StaticSever();
            server.Id = reader.getInt();
            server.Name = reader.readString();
            server.Ip = reader.readString();
            server.Port = reader.getInt();
            serverList.Add(server);

        }
        Debug.Log(serverList);
    }
Пример #47
0
 protected override void DecodePackage(NetReader reader)
 {
     actionResult = new ActionResult();
     actionResult["passportID"] = reader.readString();
     actionResult["password"] = reader.readString();
 }
Пример #48
0
 /// <summary>
 /// http respond
 /// </summary>
 /// <param name="package"></param>
 /// <param name="userdata"></param>
 public void OnHttpRespond(HttpPackage package, object userdata)
 {
     if (package.error != null)
     {
         OnNetError(package.Tag, package.error.ToString());
     }
     else if (package.overTime)
     {
         OnNetTimeOut(package.Tag);
     }
     else
     {
         NetReader reader = new NetReader();
         reader.pushNetStream(package.buf, NetworkType.Http);
         ServerResponse.ResponseData data = null;
         bool bRet = true;
         if (reader.ActionId != 0)//��ȡ�������б�Ƚ�����û��Э��ͷ
         {
             if (CommonCallback != null)
             {
                 bRet = CommonCallback(reader);
             }
         }
         if (bRet)
         {
             data = ServerResponse.Instance.GetData(reader);
             ProcessBodyData(data, userdata, package.FuncCallback);
         }
         reader = null;
     }
 }
Пример #49
0
 public ResponseData GetData(NetReader reader)
 {
     ResponseData data = new ResponseData();
     data.ActionId = reader.ActionId;
     data.ErrorCode = reader.StatusCode;
     data.ErrorMsg = reader.Description;
     IResponse ret = null;
     if (data.ErrorCode == Net.Instance.NetSuccess)
     {
          ret = GetResponse(reader, data.ActionId);
     }
     data.Resonse = ret;
     return data;
 }
Пример #50
0
 protected override void DecodePackage(NetReader reader)
 {
 }
Пример #51
0
 public bool CommonData(NetReader reader)
 {
     bool bRet = true;
     return bRet;
 }
Пример #52
0
    //(object state)
    private void CheckReceive()
    {
        while (true)
        {
            if (socket == null) return;
            try
            {
                if (socket.Poll(5, SelectMode.SelectRead))
                {
                    if (socket.Available == 0)
                    {
                        UnityEngine.Debug.Log("Close Socket");
                        Close();
                        break;
                    }
                    byte[] prefix = new byte[4];
                    int recnum = socket.Receive(prefix);

                    if (recnum == 4)
                    {
                        int datalen = BitConverter.ToInt32(prefix, 0);
                        byte[] data = new byte[datalen];
                        int startIndex = 0;
                        recnum = 0;
                        do
                        {
                            int rev = socket.Receive(data, startIndex, datalen - recnum, SocketFlags.None);
                            recnum += rev;
                            startIndex += rev;
                        } while (recnum != datalen);
                        if (data[0] == 0x1f && data[1] == 0x8b && data[2] == 0x08 && data[3] == 0x00)
                        {
                            data = NetReader.Decompression(data);
                        }
                        NetReader reader = new NetReader();
                        reader.pushNetStream(data, NetworkType.Http);
                        SocketPackage findPackage = null;
                        UnityEngine.Debug.Log("socket.Poll ok" + recnum + "actionId:" + reader.ActionId + " " + reader.RmId.ToString() + "len" + datalen.ToString());
                        lock (sendList)
                        {
                            foreach (SocketPackage package in sendList)
                            {
                                if (package.MsgId == reader.RmId)
                                {
                                    package.Reader = reader;
                                    package.ErrorCode = (int)ErrorCode.eSuccess;
                                    package.ErrorMsg = "success";
                                    findPackage = package;
                                    break;
                                }

                            }
                        }
                        foreach (SocketPackage package in pushActionList)
                        {
                            if (package.ActionId == reader.ActionId)
                            {
                                package.Reader = reader;
                                package.ErrorCode = (int)ErrorCode.eSuccess;
                                package.ErrorMsg = "success";
                                findPackage = package;
                            }
                        }
                        if (findPackage != null)
                        {
                            lock (receiveQueue)
                            {
                                receiveQueue.Enqueue(findPackage);
                            }
                            lock (sendList)
                            {
                                sendList.Remove(findPackage);
                            }
                        }

                    }

                }
                else if (socket.Poll(5, SelectMode.SelectError))
                {
                    Close();
                    UnityEngine.Debug.Log("SelectError Close Socket");
                    break;

                }
            }
            catch (Exception ex)
            {
                UnityEngine.Debug.Log("catch" + ex.ToString());

            }

            Thread.Sleep(5);

        }
    }
Пример #53
0
    private void CheckReceive()
    {
        while (true)
        {
            if (_socket == null) return;
            try
            {
                if (_socket.Poll(5, SelectMode.SelectRead))
                {
                    if (_socket.Available == 0)
                    {
                        Debug.Log("Close Socket");
                        Close();
                        break;
                    }
                    byte[] prefix = new byte[4];
                    int recnum = _socket.Receive(prefix);

                    if (recnum == 4)
                    {
                        int datalen = BitConverter.ToInt32(prefix, 0);
                        byte[] data = new byte[datalen];
                        int startIndex = 0;
                        recnum = 0;
                        do
                        {
                            int rev = _socket.Receive(data, startIndex, datalen - recnum, SocketFlags.None);
                            recnum += rev;
                            startIndex += rev;
                        } while (recnum != datalen);
                        //判断流是否有Gzip压缩
                        if (data[0] == 0x1f && data[1] == 0x8b && data[2] == 0x08 && data[3] == 0x00)
                        {
                            data = NetReader.Decompression(data);
                        }

                        NetReader reader = new NetReader(_formater);
                        reader.pushNetStream(data, NetworkType.Socket, NetWriter.ResponseContentType);
                        SocketPackage findPackage = null;

                        Debug.Log("Socket receive ok, revLen:" + recnum
                            + ", actionId:" + reader.ActionId
                            + ", msgId:" + reader.RmId
                            + ", error:" + reader.StatusCode + reader.Description
                            + ", packLen:" + reader.Buffer.Length);
                        lock (_sendList)
                        {
                            //find pack in send queue.
                            foreach (SocketPackage package in _sendList)
                            {
                                if (package.MsgId == reader.RmId)
                                {
                                    package.Reader = reader;
                                    package.ErrorCode = reader.StatusCode;
                                    package.ErrorMsg = reader.Description;
                                    findPackage = package;
                                    break;
                                }

                            }
                        }
                        if (findPackage == null)
                        {
                            lock (_receiveQueue)
                            {
                                //find pack in receive queue.
                                foreach (SocketPackage package in ActionPools)
                                {
                                    if (package.ActionId == reader.ActionId)
                                    {
                                        package.Reader = reader;
                                        package.ErrorCode = reader.StatusCode;
                                        package.ErrorMsg = reader.Description;
                                        findPackage = package;
                                        break;
                                    }
                                }
                            }
                        }
                        if (findPackage != null)
                        {
                            lock (_receiveQueue)
                            {
                                _receiveQueue.Enqueue(findPackage);
                            }
                            lock (_sendList)
                            {
                                _sendList.Remove(findPackage);
                            }
                        }
                        else
                        {
                            //server push pack.
                            SocketPackage package = new SocketPackage();
                            package.MsgId = reader.RmId;
                            package.ActionId = reader.ActionId;
                            package.ErrorCode = reader.StatusCode;
                            package.ErrorMsg = reader.Description;
                            package.Reader = reader;

                            lock (_pushQueue)
                            {
                                _pushQueue.Enqueue(package);
                            }
                        }

                    }

                }
                else if (_socket.Poll(5, SelectMode.SelectError))
                {
                    Close();
                    UnityEngine.Debug.Log("SelectError Close Socket");
                    break;

                }
            }
            catch (Exception ex)
            {
                UnityEngine.Debug.Log("catch" + ex.ToString());

            }

            Thread.Sleep(5);

        }

    }
Пример #54
0
 protected override void DecodePackage(NetReader reader)
 {
     actionResult = new ActionResult();
 }
Пример #55
0
 protected abstract void DecodePackage(NetReader reader);