コード例 #1
0
ファイル: TestGameServer.cs プロジェクト: zhaoy615/Guizhoule
        private void ConnectionList()
        {
            IPAddress ipaddress;
            EndPoint  point;
            Socket    sc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            ipaddress = IPAddress.Parse("192.168.2.54");
            point     = new IPEndPoint(ipaddress, int.Parse("2018"));
            sc.Connect(point);
            sc.Blocking = true;
            string    openid = Guid.NewGuid().ToString();
            SendLogin login  = SendLogin.CreateBuilder()
                               .SetOpenid(openid)
                               .SetNickname("测试用户" + openid.Substring(0, 3))
                               .SetSex("1")
                               .SetProvince("贵州")
                               .SetCity("贵阳")
                               .SetHeadimg("http://imgsrc.baidu.com/forum/pic/item/34aa0df3d7ca7bcb1620282fb8096b63f724a8ff.jpg")
                               .SetUnionid(openid)
                               .SetLatitude("0,0")
                               .Build();


            byte[] body = login.ToByteArray();
            byte[] data = CreateHead.CreateMessage(CreateHead.CSXYNUM + 1001, body.Length, 0, body);
            // if (clientSocket.Connected)
            //Connect();
            sc.Send(data);
            ReceiveMessage(sc, openid);
        }
コード例 #2
0
        public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo)
        {
            var     loginInfo = SendLoginPW.ParseFrom(requestInfo.Body);
            dynamic info      = null;
            string  infoStr   = string.Empty;

            if (loginInfo.HasCertificate)//如果有传证书
            {
                infoStr = RoomCardUtility.GetloginInfoByCertStr(CompressUtility.DecompressString(loginInfo.Certificate));
                if (string.IsNullOrEmpty(infoStr))//3证书无效
                {
                    byte[] msg = ReturnLogin.CreateBuilder().SetLoginstat(3).SetUserID(0).SetUserRoomCard(0).Build().ToByteArray();
                    session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1002, msg.Length, requestInfo.MessageNum, msg)));
                    return;
                }
                else
                {
                    try
                    {
                        info = JsonConvert.DeserializeObject <dynamic>(infoStr);
                        if ((DateTime.Now - ((DateTime)info.dateTime)).TotalHours >= 168)//证书过期
                        {
                            byte[] msg = ReturnLogin.CreateBuilder().SetLoginstat(4).SetUserID(0).SetUserRoomCard(0).Build().ToByteArray();
                            session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1002, msg.Length, requestInfo.MessageNum, msg)));
                            return;
                        }
                        info.Score = RoomCardUtility.GetLongBaoNumber(info.ID.ToString());
                    }
                    catch (Exception ex)
                    {
                        session.Logger.Error(ex);
                        byte[] msg = ReturnLogin.CreateBuilder().SetLoginstat(3).SetUserID(0).SetUserRoomCard(0).Build().ToByteArray();
                        session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1002, msg.Length, requestInfo.MessageNum, msg)));
                        return;
                    }
                }
            }
            else
            {
                infoStr = RoomCardUtility.GetloginInfoByPWD(loginInfo.UserAccount, loginInfo.Pwd);
                if (string.IsNullOrEmpty(infoStr) || JsonConvert.DeserializeObject <dynamic>(infoStr) == null) //5账号密码错误,
                {
                    session.Logger.Debug(infoStr + "infoStr" + infoStr);
                    byte[] msg = ReturnLogin.CreateBuilder().SetLoginstat(5).SetUserID(0).SetUserRoomCard(0).Build().ToByteArray();
                    session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1002, msg.Length, requestInfo.MessageNum, msg)));
                    return;
                }
                info = JsonConvert.DeserializeObject <dynamic>(infoStr);
            }
            SendLogin loginInfobuild = SendLogin.CreateBuilder().SetCity(loginInfo.City).SetHeadimg(string.IsNullOrEmpty(info.HeadImg1.ToString()) ?"1": string.Format("http://www.qytfkj.com{0}", info.HeadImg1)).SetLatitude(loginInfo.Latitude).SetNickname(info.TrueName.ToString())
                                       .SetOpenid(info.ID.ToString()).SetProvince(loginInfo.Province).SetSex(info.Sex.ToString().Equals("1") ? "2" : "1").SetUnionid(info.ID.ToString()).Build();
            var loginInfoByte = loginInfobuild.ToByteArray();
            var login         = new Login();
            var json          = new
            {
                ID       = info.ID,
                Sex      = info.Sex,
                HeadImg1 = info.HeadImg1,
                TrueName = info.TrueName,
                Score    = info.Score,
                dateTime = DateTime.Now
            };

            login.CerStr      = CompressUtility.CompressString(RoomCardUtility.GetCertStrByloginInfoStr(JsonConvert.SerializeObject(json)));
            login.UserType    = 1;
            login.UserLongBao = (long)info.Score;
            login.ExecuteCommand(session, new ProtobufRequestInfo {
                Body = loginInfoByte
            });
        }