예제 #1
0
파일: Program.cs 프로젝트: tkial/ZYSOCKET
        /// <summary>
        /// 数据包输入
        /// </summary>
        /// <param name="data">输入数据</param>
        /// <param name="socketAsync">该数据包的通讯SOCKET</param>
        static void BinaryInputHandler(byte[] data, int offset, int count, SocketAsyncEventArgs socketAsync)
        {
            if (socketAsync.UserToken == null) //如果此SOCKET绑定的对象为NULL
            {
                //注意这里为了 简单 所以就绑定了个 BuffList 类,本来这里应该绑定用户类对象,
                //并在用户类里面建立 初始化 一个 BuffList 类,这样就能通过用户类保存更多的信息了。
                //比如用户名,权限等等


                socketAsync.UserToken = new ZYNetRingBufferPool(409600);
            }

            //BuffList 数据包组合类 如果不想丢数据就用这个类吧
            ZYNetRingBufferPool buff = socketAsync.UserToken as ZYNetRingBufferPool;


            buff.Write(data, offset, count); //呵呵带offset的 可以省一次copy


            byte[] pdata;
            while (buff.Read(out pdata))
            {
                DataOn(pdata, socketAsync);
            }
        }
예제 #2
0
파일: Program.cs 프로젝트: tkial/ZYSOCKET
        static void client_BinaryInput(byte[] data)
        {
            Stream.Write(data);

            byte[] pdata;
            while (Stream.Read(out pdata))
            {
                DataOn(pdata);
            }
        }
예제 #3
0
        private static void Client_BinaryInput(byte[] data)
        {
            bufferPool.Write(data);

            byte[] pdata;

            while (bufferPool.Read(out pdata))
            {
                DataOn(pdata);
            }
        }
예제 #4
0
        /// <summary>
        /// 数据包输入
        /// </summary>
        /// <param name="data">输入数据</param>
        /// <param name="socketAsync">该数据包的通讯SOCKET</param>
        static void BinaryInputHandler(byte[] data, int offset, int count, SocketAsyncEventArgs socketAsync)
        {
            try
            {
                if (socketAsync.UserToken == null) //如果此SOCKET绑定的对象为NULL
                {
                    //注意这里为了 简单 所以就绑定了个 BuffList 类,本来这里应该绑定用户类对象,
                    //并在用户类里面建立 初始化 一个 BuffList 类,这样就能通过用户类保存更多的信息了。
                    //比如用户名,权限等等


                    socketAsync.UserToken = new ZYNetRingBufferPool(409600);
                }



                //BuffList 数据包组合类 如果不想丢数据就用这个类吧
                ZYNetRingBufferPool buff = socketAsync.UserToken as ZYNetRingBufferPool;


                if (buff != null)
                {
                    buff.Write(data, offset, count); //呵呵带offset的 可以省一次copy


                    byte[] pdata;
                    while (buff.Read(out pdata))
                    {
                        DataOn(pdata, socketAsync);
                    }
                }
                else
                {
                    UserInfo user = socketAsync.UserToken as UserInfo;

                    if (user != null)
                    {
                        user.BuffPool.Write(data, offset, count); //呵呵带offset的 可以省一次copy


                        byte[] pdata;
                        while (user.BuffPool.Read(out pdata))
                        {
                            DataOn(pdata, user);
                        }
                    }
                }
            }
            catch (Exception er)
            {
                Console.WriteLine(er.ToString());
            }
        }