/**
     * 发送登录协议
     **/
    private void OnClickLogin(GameObject go, PointerEventData ed)
    {
        loginStatus = true;
        string host = "192.168.87.36";
        int    port = 9777;

        NetCore.Connect(host, port, () => NetCore.Receive());
        _txtTips.text = "login ..";
        NetSender.Send <ProtoProtocol.travelerLogin>(null, (info) =>
        {
            var res = info as ProtoSprotoType.travelerLogin.response;
            NetCore.Connect(res.ip, (int)res.port, () => NetCore.Receive());

            var sendInfo     = new ProtoSprotoType.login.request();
            sendInfo.session = res.session;
            sendInfo.token   = res.token;
            NetSender.Send <ProtoProtocol.login>(sendInfo, (loginInfo) => {
                var loginResInfo = loginInfo as ProtoSprotoType.login.response;
                Debug.Log(loginResInfo.status);
                if (!loginResInfo.status)
                {
                    //账号密码错误
                    loginStatus = false;
                }
            });
        });
    }
    void Update()
    {
        //发送心跳包
        var nowTime = (uint)(DateTime.Now - startTime).TotalSeconds; // 相差秒数

        if (heartTimeFlag == 0 && nowTime >= lastHeartTime + 2)
        {
            Debug.Log(rand.Next(10, 500));
            Debug.Log(rand.Next(10, 500));
            lastHeartTime = nowTime;
            heartTimeFlag = nowTime;
            NetSender.Send <ProtoProtocol.heartbeat>(null, (info) =>
            {
                heartTimeFlag = 0;
                //var rsp = info as ProtoSprotoType.heartbeat.response;
                //Debug.Log(rsp.status);
            });
        }
        //正常情况  没有收到心跳包的回包 开启重连
        if (loginStatus && heartTimeFlag != 0 && nowTime >= heartTimeFlag + 2)
        {
            heartTimeFlag = 0;
            OnClickLogin(null, null);
        }
    }
Exemple #3
0
    //send find match msg to server
    public void FindRoom()
    {
        Debug.Log("FindRoom called");

        MultiGameState    = GameState.Game_Match;
        TheUserMatchState = UserMatchState.FindRoom;

        SprotoType.matchMsg.request req = new SprotoType.matchMsg.request();
        req.matchMsgType = (int)MatchMsgType.Match_FindRoom;
        //mChen
        //switch (GameManager.TheGameMode)
        //{
        //    case GameMode.MultiGame_1v1:
        //        req.matchInfo = ((int)MatchType.Normal_1v1).ToString();
        //        break;
        //    case GameMode.MultiGame_2v2:
        //        req.matchInfo = ((int)MatchType.Normal_2v2).ToString();
        //        break;
        //    case GameMode.MultiGame_3v3:
        //        req.matchInfo = ((int)MatchType.Normal_3v3).ToString();
        //        break;
        //}
        req.matchInfo = ((int)MatchType.Normal_1v1).ToString();

        NetSender.Send <Protocol.matchMsg>(req);
    }
Exemple #4
0
    private Thread _sendHeartBeatThread;  // send and receive heartbeat msg thread


    //constructor, init NetCore,NetSender,NetReceiver, add receiver handler, start check network thread
    public NetWorkClient()
    {
        var forInit = Loom.Current;//to initialize Loom in mainThread

        TheUserLoginState = UserLoginState.NullState;
        TheUserMatchState = UserMatchState.NullState;
        MultiGameState    = GameState.Game_NullState;

        AllPlayers = new List <MultiPlayerInfo>();

        // Debug.Log("init netclient");
        NetCore.Init();
        NetCore.SocketDisconnectHandler += Reconnect;
        NetSender.Init();
        NetReceiver.Init();

        SetupNetReceiverHandler();

        StartConnect();

        //mChen
        //_checkNetworkThread = new Thread(CheckHeartBeat) { IsBackground = true };
        ////防止后台现成。相反需要后台线程就设为false
        //_checkNetworkThread.Start();
        //while (_checkNetworkThread.IsAlive == false)
        //{
        //}
    }
Exemple #5
0
        private void DloadFPGABtn_Click(object sender, EventArgs e)
        {
            char[] sendbuf;//下发数据缓存
            openFileDialog.Filter = "FPGA文件(*.data)|*.data|所有文件(*.*)|*.*";
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                FPGA_filename.Text = openFileDialog.FileName;
            }
            if (!File.Exists(FPGA_filename.Text))
            {
                try
                {
                    Encoding ascii    = Encoding.ASCII;
                    string   readText = File.ReadAllText(FPGA_filename.Text, ascii);
                    sendbuf = new char[readText.Length];
                    readText.CopyTo(0, sendbuf, 0, readText.Length);
                    DloadType = 1;
                    NetSender.RunWorkerAsync(sendbuf);
                }

                catch (Exception myEx)
                {
                    MessageBox.Show(myEx.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else
            {
                MessageBox.Show("文件不存在", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
 public void OnConnected()
 {
     NetCore.Init();
     NetSender.Init();
     NetReceiver.Init();
     // TODO: do handshake rpc
 }
Exemple #7
0
 void MapReady()
 {
     NetSender.Send <ClientProtocol.mapready>(null, (_) =>
     {
         mapready.response rsp = _ as mapready.response;
         Debug.Log("进入地图结果:" + rsp.ok);
     });
 }
Exemple #8
0
 void Auth(byte[] etokens)
 {
     Debug.Log(etokens.ToString());
     // 账号密码服务器验证
     auth.request req = new auth.request();
     req.etokens = Convert.ToBase64String(etokens);
     NetSender.Send <ClientProtocol.auth>(req);
 }
Exemple #9
0
    // Use this for initialization
    void Start()
    {
        NetCore.Init();
        NetReceiver.Init();
        NetSender.Init();
        var goTestWin = GameObject.Find("TestWin");     // 打开测试界面

        goTestWin.AddComponent <TestWin>();
    }
Exemple #10
0
    public void TryToJoinMatch()
    {
        Debug.Log("TryToJoinMatch called");
        //TheUserMatchState = UserMatchState.JoinedRoom;

        SprotoType.matchMsg.request req = new SprotoType.matchMsg.request();
        req.matchMsgType = (int)MatchMsgType.Match_TryToJoinMatch;
        NetSender.Send <Protocol.matchMsg>(req);
    }
Exemple #11
0
        private void InitMain()
        {
            Debug.Log("开始初始化网络");

            NetCore.Init();
            NetSender.Init();
            NetReceiver.Init();

            NetCore.enabled = true;
        }
Exemple #12
0
    override public void Init()
    {
        NetSender.Init();
        NetReceiver.Init();
        NetCore.Init();

        NetCore.enabled = true;

        Connect();
    }
Exemple #13
0
    //reset gameState
    public void Reset()
    {
        if (GameManager.s_gameSingleMultiType == GameSingleMultiType.MultiGame_Skynet)
        {
            //NetCore.Reset();
            MultiGameState = GameState.Game_NullState;

            //SprotoType.quit.request req = new SprotoType.quit.request();
            NetSender.Send <Protocol.quit>(null);
        }
    }
Exemple #14
0
 void Awake()
 {
     if (!bInit)
     {
         bInit = true;
         NetCore.Init();
         NetSender.Init();
         NetReceiver.Init();
         DontDestroyOnLoad(gameObject);
     }
 }
Exemple #15
0
    public static void Dispatch()
    {
        package pkg = new package();

        lock (queueLock)
        {
            if (recvQueue.Count == 0)
            {
                return;
            }

            Queue <byte[]> tmpQueue = recvQueue;
            recvQueue     = dispatchQueue;
            dispatchQueue = tmpQueue;
        }

        if (dispatchQueue.Count > 20)
        {
            Debug.Log("dispatchQueue.Count: " + dispatchQueue.Count);
        }

        while (dispatchQueue.Count > 0)
        {
            byte[] data   = recvPack.unpack(dispatchQueue.Dequeue());
            int    offset = pkg.init(data);

            int  tag     = (int)pkg.type;
            long session = (long)pkg.session;

            if (pkg.HasType)
            {
                RpcReqHandler rpcReqHandler = NetReceiver.GetHandler(tag);
                if (rpcReqHandler != null)
                {
                    SprotoTypeBase rpcRsp = rpcReqHandler(protocol.GenRequest(tag, data, offset));
                    if (pkg.HasSession)
                    {
                        Send(rpcRsp, session, tag);
                    }
                }
            }
            else
            {
                RpcRspHandler rpcRspHandler = NetSender.GetHandler(session);
                if (rpcRspHandler != null)
                {
                    ProtocolFunctionDictionary.typeFunc GenResponse;
                    sessionDict.TryGetValue(session, out GenResponse);
                    rpcRspHandler(GenResponse(data, offset));
                }
            }
        }
    }
 public void EnterGame()
 {
     characterpick.request req = new characterpick.request();
     req.uuid = PlayerInfo.Instance.UUID;
     NetSender.Send <ClientProtocol.characterpick>(req, (_) =>
     {
         characterpick.response rsp = _ as characterpick.response;
         Debug.Log("选择角色结果:" + rsp.ok);
         LoadScene();
     });
     Debug.Log("选择角色唯一ID:" + PlayerInfo.Instance.UUID);
 }
Exemple #17
0
 void Challenge(byte[] hmac)
 {
     // 验证密钥
     challenge.request req = new challenge.request();
     req.hmac = Convert.ToBase64String(hmac);
     NetSender.Send <ClientProtocol.challenge>(req, (_) =>
     {
         challenge.response rsp = _ as challenge.response;
         Debug.Log(rsp.result);
         string temp   = EncodeToken();
         byte[] etoken = desencode(PlayerInfo.Instance.Secret, Encoding.UTF8.GetBytes(temp));
         Auth(etoken);
     });
 }
    public void CreateCharacter()
    {
        charactercreate.request req = new charactercreate.request();
        req.name = CharacterNameInputField.text;
        req.job  = job;
        req.sex  = sex;
        NetSender.Send <ClientProtocol.charactercreate>(req, (_) =>
        {
            Debug.Log("创建角色返回");
            Login.Instance.GetCharacterList();
        });

        Debug.Log("创建角色 名称:" + CharacterNameInputField.text + " 职业:" + job + " 性别:" + sex);
    }
Exemple #19
0
    public void LeaveMatchToRoom()
    {
        Debug.Log("LeaveMatchToRoom called");

        if (TheUserMatchState == UserMatchState.PlayingMatch || TheUserMatchState == UserMatchState.WaitToJoinNextMatch)
        {
            MultiGameState    = GameState.Game_Match;
            TheUserMatchState = UserMatchState.JoinedRoom;

            SprotoType.matchMsg.request req = new SprotoType.matchMsg.request();
            req.matchMsgType = (int)MatchMsgType.Match_LeaveMatchToRoom;
            NetSender.Send <Protocol.matchMsg>(req);
        }
    }
Exemple #20
0
    public void handleInput()
    {
        OptStruct optVer = new OptStruct {
            type = OptType.None
        }, optHor = new OptStruct {
            type = OptType.None
        };

        if (InputManager.instance.isKeyPress(KeyCode.W))
        {
            optVer.type  = OptType.MoveVer;
            optVer.value = 1;
        }
        else if (InputManager.instance.isKeyPress(KeyCode.S))
        {
            optVer.type  = OptType.MoveVer;
            optVer.value = -1;
        }


        if (InputManager.instance.isKeyPress(KeyCode.A))
        {
            optHor.type  = OptType.MoveHor;
            optHor.value = -1;
        }
        else if (InputManager.instance.isKeyPress(KeyCode.D))
        {
            optHor.type  = OptType.MoveHor;
            optHor.value = 1;
        }

        if (optVer.type != OptType.None)
        {
            SprotoType.playopt.request opt = new SprotoType.playopt.request();
            opt.optUnit = new SprotoType.optUnit {
                type = (int)optVer.type, param = optVer.value
            };
            NetSender.Send <Protocol.playopt>(opt, OnRecvOpt);
        }

        if (optHor.type != OptType.None)
        {
            SprotoType.playopt.request opt = new SprotoType.playopt.request();
            opt.optUnit = new SprotoType.optUnit {
                type = (int)optHor.type, param = optHor.value
            };
            NetSender.Send <Protocol.playopt>(opt, OnRecvOpt);
        }
    }
Exemple #21
0
 void MoveTo()
 {
     if (lastPosition != gameObj.transform.position)
     {
         lastPosition = gameObj.transform.position;
         moveto.request req = new moveto.request();
         req.pos   = new character_pos();
         req.pos.x = Convert.ToInt32(gameObj.transform.position.x) * 10;
         req.pos.y = Convert.ToInt32(gameObj.transform.position.y) * 10;
         req.pos.z = Convert.ToInt32(gameObj.transform.position.z) * 10;
         NetSender.Send <ClientProtocol.moveto>(req, (_) =>
         {
         });
     }
 }
Exemple #22
0
        /// <summary>
        /// Shows the options for this application. The OptionsForm defines what
        /// options are available, and exports them in a public structure.
        /// </summary>
        /// <param name="sender">The sender of this event.</param>
        /// <param name="e">The arguments for this event.</param>
        private void mniTestOptions_Click(object sender, EventArgs e)
        {
            OptionsForm dlg = new OptionsForm(_o);

            if (dlg.ShowDialog(this) == DialogResult.OK)
            {
                // stop any sending or listening
                if (_sender != null && _sender.IsConnected)
                {
                    _sender.Disconnect();
                }
                if (_listener != null && _listener.IsListening)
                {
                    _listener.Stop();
                }

                // set our options reference
                _o = dlg.Settings;

                // potentially start receiving as a network server
                if (_o.ReceiveOnNet)
                {
                    if (_o.UseWebSockets)
                    {
                        _listener = new WebSocketListener(this); // ws
                    }
                    else
                    {
                        _listener = new NetListener(this); // tcp
                    }
                    _listener.NetDataEvent += new NetListener.NetEventHandler(OnNetworkDataReceived);

                    _listener.IP   = _o.ReceiveIP;
                    _listener.Port = _o.ReceivePort;
                    _listener.Start();
                }

                // potentially start sending as a network client
                if (_o.SendOnTcp)
                {
                    _sender      = new NetSender();
                    _sender.IP   = _o.SendIP;
                    _sender.Port = _o.SendPort;
                    _sender.Connect();
                }
            }
        }
Exemple #23
0
 public void Handshake()
 {
     // 生成私钥
     clientkey = randomkey();
     handshake.request req = new handshake.request();
     // 发送公钥
     req.clientkey = Convert.ToBase64String(dhexchange(clientkey));
     NetSender.Send <ClientProtocol.handshake>(req, (_) =>
     {
         // 返回消息
         handshake.response rsp = _ as handshake.response;
         serverkey = Convert.FromBase64String(rsp.serverkey);
         PlayerInfo.Instance.Challenge = Convert.FromBase64String(rsp.challenge);
         PlayerInfo.Instance.Secret    = dhsecret(serverkey, clientkey);
         Challenge(hmac64(PlayerInfo.Instance.Challenge, PlayerInfo.Instance.Secret));
     });
 }
Exemple #24
0
        public void NetSender_Send_TestMethodAttribute()
        {
            var settings = new ConfigurationSettings();
            var sender   = new NetSender(settings);

            var hash     = HashFunction.Get("SecretWord");
            var userName = SystemInfo.GetCurrentUserDomainName();

            var photoImg = Image.FromFile("TestImages\\goodPhotoTest.jpg");
            var scanImg  = Image.FromFile("TestImages\\scanTest.jpg");

            var dataPreview = new ArmDataPackage()
            {
                Type          = ArmDataPackageType.Preview,
                IIN           = 13543543L,
                Timestamp     = DateTime.Now,
                Comment       = "test",
                Token         = hash,
                UserName      = userName,
                WFMId         = 56789L,
                CameraPicture = photoImg.ToBase64(),
                ScanPicture   = scanImg.ToBase64()
            };

            var dataFull = new ArmDataPackage()
            {
                Type          = ArmDataPackageType.FullFrame,
                IIN           = 13543543L,
                Timestamp     = DateTime.Now,
                Comment       = "test",
                Token         = hash,
                UserName      = userName,
                WFMId         = 56789L,
                CameraPicture = photoImg.ToBase64(),
                ScanPicture   = scanImg.ToBase64()
            };

            var packets = new List <ArmDataPackage>();

            packets.Add(dataFull);
            packets.Add(dataPreview);

            sender.Send(packets);
        }
        public void TestMethod1()
        {
            //string Path = "";
            var           TimeStamp        = DateTime.Now;
            List <string> FilesToSend      = null;
            List <string> JpgFilesToDelete = null;

            SetJpgFileLists(out FilesToSend, out JpgFilesToDelete);

            var tempFolder = Path.Combine(Path.GetTempPath(), "ArchivesForPackages");

            Directory.CreateDirectory(tempFolder);
            foreach (var item in FilesToSend)
            {
                if (File.Exists(item))
                {
                    FileHelper.CreateZip(item, Path.Combine(tempFolder, Path.GetFileNameWithoutExtension(item) + ".zip"));
                }
            }
            DirectoryInfo     DI            = new DirectoryInfo(tempFolder);
            var               ZipCollection = DI.GetFiles("*.zip");
            List <LogPackage> packets       = new List <LogPackage>();

            foreach (var item in ZipCollection)
            {
                var paket = CreateLogPacket(item.Name, item.FullName, TimeStamp);
                //paket.FileName = "some string";
                packets.Add(paket);
                try
                {
                    var json = Newtonsoft.Json.JsonConvert.SerializeObject(paket);
                }
                catch (Exception ex)
                {
                }
            }

            //ChangeWebCamFullImage(ii.FullImage);
            var config = new CommonLib.ConfigurationSettings();

            var netSender = new NetSender(config);

            var sendedResult = netSender.Send(packets);
        }
Exemple #26
0
 public void GetCharacterList()
 {
     // 请求角色列表
     NetSender.Send <ClientProtocol.getcharacterlist>(null, (_) =>
     {
         getcharacterlist.response rsp     = _ as getcharacterlist.response;
         PlayerInfo.Instance.CharacterList = rsp.character;
         Debug.Log("玩家角色数量:" + PlayerInfo.Instance.CharacterList.Count);
         if (PlayerInfo.Instance.CharacterList.Count == 0)
         {
             // 创建角色
             LoadCreateCharacterScene();
         }
         else
         {
             // 选择角色
             LoadPickCharacterScene();
         }
     });
 }
Exemple #27
0
    //send and receive heart beat msg thread function
    public void SendHeartBeatMsg()
    {
        CheckConnectVar = true;
        while (NetCore.bConnected)
        {
            Debug.Log("heart beat send");

            Loom.QueueOnMainThread(() =>
            {
                Human localHuman                 = GameObjectsManager.GetInstance().GetLocalHuman();
                Vector3 localPlayerPos           = localHuman.transform.position;
                Vector3 eulerAngles              = localHuman.transform.eulerAngles;
                SprotoType.heartbeat.request req = new heartbeat.request
                {
                    posX = BitConverter.ToInt64(BitConverter.GetBytes((double)localPlayerPos.x), 0),
                    posY = BitConverter.ToInt64(BitConverter.GetBytes((double)localPlayerPos.y), 0),
                    posZ = BitConverter.ToInt64(BitConverter.GetBytes((double)localPlayerPos.z), 0),

                    angleX = BitConverter.ToInt64(BitConverter.GetBytes((double)eulerAngles.x), 0),
                    angleY = BitConverter.ToInt64(BitConverter.GetBytes((double)eulerAngles.y), 0),
                    angleZ = BitConverter.ToInt64(BitConverter.GetBytes((double)eulerAngles.z), 0)
                };
                //req.playerPosMsg = new SprotoType.PlayerPosMsg();
                //req.playerPosMsg.playerIndex = (int)-1;
                //req.playerPosMsg.posX = BitConverter.ToInt64(BitConverter.GetBytes((double)localPlayerPos.x), 0);
                //req.playerPosMsg.posY = BitConverter.ToInt64(BitConverter.GetBytes((double)localPlayerPos.y), 0);
                //req.playerPosMsg.posZ = BitConverter.ToInt64(BitConverter.GetBytes((double)localPlayerPos.z), 0);

                NetSender.Send <Protocol.heartbeat>(req, (_) =>
                {
                    CheckConnectVar = true;
                });
            });

            Thread.Sleep(5000);//5s
        }
        Debug.Log("SendHeartBeatMsg thread exit");
    }
Exemple #28
0
    void QueryLogin()
    {
        //请求登陆gameserver
        string handshake = string.Format("{0}@{1}#{2}:{3}",
                                         Utilities.ToBase64String(PlayerInfo.Instance.Account),
                                         Utilities.ToBase64String(PlayerInfo.Instance.Server),
                                         Utilities.ToBase64String(PlayerInfo.Instance.Subid), PlayerInfo.Instance.Index);

        byte[]        hmac = hmac64(hashkey(Encoding.UTF8.GetBytes(handshake)), PlayerInfo.Instance.Secret);
        login.request req  = new login.request();
        req.handshake = handshake + ":" + Convert.ToBase64String(hmac);
        NetSender.Send <ClientProtocol.login>(req, (_) =>
        {
            login.response rsp = _ as login.response;
            Debug.Log(rsp.result);
            int code = Convert.ToInt32(rsp.result.Substring(0, 3));
            if (code == 200)
            {
                Debug.Log("游戏服务器认证成功!");
                GetCharacterList();
            }
        });
    }
 public void AddSender(NetSender sender)
 {
     Senders.Add(sender);
 }
Exemple #30
0
    public static void Dispatch()
    {
        //Debug.Log("dis");
        try
        {
            package pkg = new package();

            if (recvQueue.Count > 20)
            {
                Debug.Log("recvQueue.Count: " + recvQueue.Count);
            }

            while (recvQueue.Count > 0)
            {
                //Debug.Log("dis");
                byte[] data   = recvPack.unpack(recvQueue.Dequeue());
                int    offset = pkg.init(data);

                int  tag     = (int)pkg.type;
                long session = (long)pkg.session;

                if (pkg.HasType)
                {
                    //Debug.Log("type");
                    try
                    {
                        RpcReqHandler rpcReqHandler = NetReceiver.GetHandler(tag);
                        if (rpcReqHandler != null)
                        {
                            SprotoTypeBase rpcRsp = rpcReqHandler(protocol.GenRequest(tag, data, offset));
                            if (pkg.HasSession)
                            {
                                Send(rpcRsp, session, tag);
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        Debug.Log("NetReceiver exception: " + e.Message + tag + session + offset);
                        throw;
                    }
                }
                else
                {
                    //Debug.Log("no type");
                    try
                    {
                        RpcRspHandler rpcRspHandler = NetSender.GetHandler(session);
                        if (rpcRspHandler != null)
                        {
                            ProtocolFunctionDictionary.typeFunc GenResponse;
                            sessionDict.TryGetValue(session, out GenResponse);
                            rpcRspHandler(GenResponse(data, offset));
                        }
                    }
                    catch (Exception e)
                    {
                        Debug.Log("NetReceiver exception: " + e.Message + tag + session + offset);
                        throw;
                    }
                }
            }
        }
        catch (Exception e)
        {
            Debug.Log("Dispatch exception: " + e.Message);
            throw;
        }
    }