Example #1
0
        public bool Connection(string host, int port)
        {
            if (!IsConnect)
            {
                ResRetrunDiy         = new ConcurrentDictionary <string, ResReturn>();
                Stream               = new ZYNetRingBufferPoolV2(1024 * 1024 * 30);
                Client               = new SocketClient();
                Client.BinaryInput  += Client_BinaryInput;
                Client.MessageInput += Client_MessageInput;

                if (Client.Connect(host, port))
                {
                    IsConnect = true;
                    Client.StartRead();
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(true);
            }
        }
Example #2
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
                {
                    //注意这里为了 简单 所以就绑定了个 ZYNetBufferReadStreamV2 类,本来这里应该绑定用户类对象,
                    //并在用户类里面建立 初始化 一个 ZYNetBufferReadStreamV2 类,这样就能通过用户类保存更多的信息了。
                    //比如用户名,权限等等
                    socketAsync.UserToken = new ZYNetRingBufferPoolV2(4096000);
                }



                ZYNetRingBufferPoolV2 stream = socketAsync.UserToken as ZYNetRingBufferPoolV2; //最新的数据包整合类

                stream.Write(data, offset, count);

                byte[] datax;
                while (stream.Read(out datax))
                {
                    DataOn(datax, socketAsync);
                }
            }
            catch (Exception er)
            {
                Console.WriteLine(er.ToString());
            }
        }
Example #3
0
 static SocketManager()
 {
     Stream               = new ZYNetRingBufferPoolV2(40960);
     client               = new SocketClient();
     client.BinaryInput  += new ClientBinaryInputHandler(client_BinaryInput);
     client.ErrorLogOut  += new ErrorLogOutHandler(client_ErrorLogOut);
     client.MessageInput += new ClientMessageInputHandler(client_MessageInput);
 }
Example #4
0
 static SocketManager()
 {
     //初始化数据包缓冲区,并设置了最大数据包尽可能的大
     BuffListManger        = new ZYNetRingBufferPoolV2(400000);
     client                = new SocketClient();
     client.DataOn        += new DataOn(client_DataOn);
     client.Disconnection += new ExceptionDisconnection(client_Disconnection);
 }
Example #5
0
 public ClientInfo(string host, int port, int regipport, int bindminPort, int bindMaxPort, int resCount, string mac)
 {
     ResetConnt     = resCount;
     ConnUserList   = new ConcurrentDictionary <string, ConClient>(); //初始化客户端列表
     ProxyList      = new ConcurrentDictionary <string, ConClient>();
     Key            = Guid.NewGuid().ToString();                      //产生唯一标示KEY
     Bufferlist     = new ZYNetRingBufferPoolV2();
     UserMaskList   = new ConcurrentQueue <string>();
     BindPort       = new Random().Next(bindminPort, bindMaxPort);
     this.Host      = host;
     this.Port      = port;
     this.RegIpPort = regipport;
     this.Mac       = mac;
 }
Example #6
0
        /// <summary>
        /// 数据包输入
        /// </summary>
        /// <param name="data">输入数据</param>
        /// <param name="socketAsync">该数据包的通讯SOCKET</param>
        void BinaryInputHandler(byte[] data, int offset, int count, SocketAsyncEventArgs socketAsync)
        {
            try
            {
                ZYNetRingBufferPoolV2 stream = socketAsync.UserToken as ZYNetRingBufferPoolV2;

                if (stream != null)
                {
                    //最新的数据包整合类

                    stream.Write(data, offset, count);

                    byte[] datax;
                    while (stream.Read(out datax))
                    {
                        LogOnPack(datax, socketAsync);
                    }
                }
                else
                {
                    UserManager userinfo = socketAsync.UserToken as UserManager;

                    userinfo.Stream.Write(data, offset, count);

                    byte[] datax;
                    while (userinfo.Stream.Read(out datax))
                    {
                        DataOn(datax, userinfo);
                    }
                }
            }
            catch (Exception er)
            {
                AddLog(er.ToString());
                server.Disconnect(socketAsync.AcceptSocket);
            }
        }