当前位置: 首页>>代码示例>>C#>>正文


C# PacketWriter.SetNetCode方法代码示例

本文整理汇总了C#中PacketWriter.SetNetCode方法的典型用法代码示例。如果您正苦于以下问题:C# PacketWriter.SetNetCode方法的具体用法?C# PacketWriter.SetNetCode怎么用?C# PacketWriter.SetNetCode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PacketWriter的用法示例。


在下文中一共展示了PacketWriter.SetNetCode方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: WriteSendMessageResult

        public static DogBuffer WriteSendMessageResult(string message)
        {
            var writer = new PacketWriter();
            writer.SetNetCode((ushort)OpCode.RecvMessage);
            writer.WriteUTF8Null(message);

            return writer.GetBuffer();
        }
开发者ID:RainsSoft,项目名称:DogSE,代码行数:8,代码来源:MessagePackageManager.cs

示例2: WriteLoginResult

        public static DogBuffer WriteLoginResult(LoginResult loginResult)
        {
            var writer = new PacketWriter();
            writer.SetNetCode((ushort)OpCode.LoginResult);
            writer.Write((int)loginResult);

            return writer.GetBuffer();
        }
开发者ID:RainsSoft,项目名称:DogSE,代码行数:8,代码来源:MessagePackageManager.cs

示例3: OnSocketRecv

        /// <summary>
        /// 收到Socket数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private static void OnSocketRecv(object sender, SocketRecvEventArgs<Session> e)
        {
            var session = e.Session.Data;
            session.RQ.Enqueue(e.Buffer.Bytes, 0, e.Buffer.Length);

            var packetlen = session.RQ.GetPacketLength();
            if (packetlen > 1024*64)
            {
                session.Client.CloseSocket();
                return;
            }

            while (packetlen >= session.RQ.Length)
            {
                var dogBuffer = new DogBuffer();
                session.RQ.Dequeue(dogBuffer.Bytes, 0, packetlen);

                var reader = new PacketReader();
                reader.SetBuffer(dogBuffer);

                var pid = (OpCode)reader.GetPacketID();

                switch (pid)
                {
                    case OpCode.Login:
                    {
                        var userName = reader.ReadUTF8String();
                        var pwd = reader.ReadUTF8String();

                        if (string.IsNullOrEmpty(userName))
                        {
                            Logs.Error("连接的用户名是空");
                            session.Client.CloseSocket();
                        }

                        if (pwd != "123")
                        {
                            Logs.Error("用户名 {0} 速度的密码错误", userName);
                            var writer = new PacketWriter();
                            writer.SetNetCode((ushort) OpCode.LoginResult);
                            writer.Write(1); //  0表示登录成功 1表示密码错误
                            session.Client.SendPackage(writer.GetBuffer());
                            return;
                        }

                        //  如果玩家之前登录过,则把之前的客户端踢下线
                        var exists = sessions.FirstOrDefault(o => o.Name == userName);
                        if (exists != null)
                        {
                            exists.IsLogin = false;
                            sessions.Remove(exists);
                            exists.Client.CloseSocket();
                        }

                        //  登录完成
                        session.IsLogin = true;
                        nologinSessions.Remove(session);
                        sessions.Add(session);

                        session.Name = userName;
                        session.Pwd = pwd;
                        var writer2 = new PacketWriter();
                        writer2.SetNetCode((ushort) OpCode.LoginResult);
                        writer2.Write(0); //  0表示登录成功 1表示密码错误
                        session.Client.SendPackage(writer2.GetBuffer());
                    }
                        break;
                    case OpCode.SendMessage:
                    {
                        var message = reader.ReadUTF8String();
                        if (string.IsNullOrEmpty(message))
                        {
                            //  空消息
                            return;
                        }

                        //  广播给所有在线的用户
                        var writer = new PacketWriter();
                        writer.SetNetCode((ushort) OpCode.RecvMessage);
                        foreach (var ss in sessions)
                        {
                            ss.Client.SendPackage(writer.GetBuffer());
                        }
                    }
                        break;
                    case OpCode.SendPriviteMessage:
                    {
                        var userName = reader.ReadUTF8String();
                        var message = reader.ReadUTF8String();

                        if (message == null)
                            return;

                        var target = sessions.FirstOrDefault(o => o.Name == userName);
                        if (target == null)
//.........这里部分代码省略.........
开发者ID:RainsSoft,项目名称:DogSE,代码行数:101,代码来源:Program.cs

示例4: OnSendPrivateMessage

        /// <summary>
        /// 给聊天室里的某人单独发消息
        /// </summary>
        /// <param name="session"></param>
        /// <param name="reader"></param>
        static void OnSendPrivateMessage(Session session, PacketReader reader)
        {
            var userName = reader.ReadUTF8String();
            var message = reader.ReadUTF8String();

            if (message == null)
                return;

            var target = sessions.FirstOrDefault(o => o.Name == userName);
            if (target == null)
                return;

            var writer = new PacketWriter();
            writer.SetNetCode((ushort) OpCode.RecvPrivateMessage);
            writer.WriteUTF8Null(session.Name);
            writer.WriteUTF8Null(message);

            target.Client.SendPackage(writer.GetBuffer());
        }
开发者ID:RainsSoft,项目名称:DogSE,代码行数:24,代码来源:Program.cs

示例5: OnSendMessage

        /// <summary>
        /// 给聊天室里的人都发消息
        /// </summary>
        /// <param name="session"></param>
        /// <param name="reader"></param>
        static void OnSendMessage(Session session, PacketReader reader)
        {
            var message = reader.ReadUTF8String();
            if (string.IsNullOrEmpty(message))
            {
                //  空消息
                return;
            }

            //  广播给所有在线的用户
            var writer = new PacketWriter();
            writer.SetNetCode((ushort)OpCode.RecvMessage);
            foreach (var ss in sessions)
            {
                ss.Client.SendPackage(writer.GetBuffer());
            }
        }
开发者ID:RainsSoft,项目名称:DogSE,代码行数:22,代码来源:Program.cs

示例6: OnLogin

        /// <summary>
        /// 登录服务器
        /// </summary>
        /// <param name="session"></param>
        /// <param name="reader"></param>
        static void OnLogin(Session session, PacketReader reader)
        {
            var userName = reader.ReadUTF8String();
            var pwd = reader.ReadUTF8String();

            if (string.IsNullOrEmpty(userName))
            {
                Logs.Error("连接的用户名是空");
                session.Client.CloseSocket();
            }

            if (pwd != "123")
            {
                Logs.Error("用户名 {0} 速度的密码错误", userName);
                var writer = new PacketWriter();
                writer.SetNetCode((ushort)OpCode.LoginResult);
                writer.Write(1);    //  0表示登录成功 1表示密码错误
                session.Client.SendPackage(writer.GetBuffer());
                return;
            }

            //  如果玩家之前登录过,则把之前的客户端踢下线
            var exists = sessions.FirstOrDefault(o => o.Name == userName);
            if (exists != null)
            {
                exists.IsLogin = false;
                sessions.Remove(exists);
                exists.Client.CloseSocket();
            }

            //  登录完成
            session.IsLogin = true;
            nologinSessions.Remove(session);
            sessions.Add(session);

            session.Name = userName;
            session.Pwd = pwd;
            session.BizId = clientIdSeq++;

            var writer2 = new PacketWriter();
            writer2.SetNetCode((ushort)OpCode.LoginResult);
            writer2.Write(0);    //  0表示登录成功 1表示密码错误
            session.Client.SendPackage(writer2.GetBuffer());
        }
开发者ID:RainsSoft,项目名称:DogSE,代码行数:49,代码来源:Program.cs


注:本文中的PacketWriter.SetNetCode方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。