/** * 发送登录协议 **/ 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); } }
//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); }
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) //{ //} }
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 }
void MapReady() { NetSender.Send <ClientProtocol.mapready>(null, (_) => { mapready.response rsp = _ as mapready.response; Debug.Log("进入地图结果:" + rsp.ok); }); }
void Auth(byte[] etokens) { Debug.Log(etokens.ToString()); // 账号密码服务器验证 auth.request req = new auth.request(); req.etokens = Convert.ToBase64String(etokens); NetSender.Send <ClientProtocol.auth>(req); }
// Use this for initialization void Start() { NetCore.Init(); NetReceiver.Init(); NetSender.Init(); var goTestWin = GameObject.Find("TestWin"); // 打开测试界面 goTestWin.AddComponent <TestWin>(); }
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); }
private void InitMain() { Debug.Log("开始初始化网络"); NetCore.Init(); NetSender.Init(); NetReceiver.Init(); NetCore.enabled = true; }
override public void Init() { NetSender.Init(); NetReceiver.Init(); NetCore.Init(); NetCore.enabled = true; Connect(); }
//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); } }
void Awake() { if (!bInit) { bInit = true; NetCore.Init(); NetSender.Init(); NetReceiver.Init(); DontDestroyOnLoad(gameObject); } }
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); }
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); }
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); } }
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); } }
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, (_) => { }); } }
/// <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(); } } }
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)); }); }
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); }
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(); } }); }
//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"); }
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); }
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; } }