Esempio n. 1
0
        /// <summary>
        /// 异步建立客户端连接回调
        /// </summary>
        private void AcceptCallBack(IAsyncResult ar)
        {
            try
            {
                Socket        socket  = listen.EndAccept(ar);
                SessionClient session = SessionClientPool.GetSessionClient();

                if (session == null)
                {
                    socket.Close();
                    Console.WriteLine("警告:连接已满!");
                }
                else
                {
                    session.Initialize(socket);
                    string address = session.GetRemoteAddress();
                    Console.WriteLine("客户端连接 [{0}]", address);
                }

                listen.BeginAccept(AcceptCallBack, null);
            }
            catch (Exception e)
            {
                Console.WriteLine("异步建立客户端连接失败:" + e.Message);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 启动服务器
        /// </summary>
        public void StartServer(string host, int port)
        {
            listen = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPAddress  ipAddress  = IPAddress.Parse(host);
            IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, port);

            listen.Bind(ipEndPoint);
            listen.Listen(maxClient);
            listen.BeginAccept(AcceptCallBack, null);
            Console.WriteLine("服务器启动成功!");
            SessionClientPool.SetMaxSessionClient(maxClient);
        }
Esempio n. 3
0
        public override bool Process(ActionParameter parameter)
        {
            string        message = "【系统通知】 " + parameter.GetValue <string>("message");
            DynamicBuffer buffer  = new DynamicBuffer();

            buffer.WriteValue(message);
            DataPackage packet = new DataPackage(buffer, 100);

            foreach (var session in SessionClientPool.GetOnlineSession())
            {
                session.Send(packet);
            }
            return(true);
        }
Esempio n. 4
0
        public override bool Process(ActionParameter parameter)
        {
            List <string> onlineList = new List <string>();

            foreach (var session in SessionClientPool.GetOnlineSession())
            {
                onlineList.Add(session.GetRemoteAddress());
            }
            DynamicBuffer buffer = new DynamicBuffer(0);

            buffer.WriteObject(onlineList);
            DataPackage packet = new DataPackage(buffer, 100);

            Session.Send(packet);
            return(true);
        }
Esempio n. 5
0
        /// <summary>
        /// 异步建立客户端连接回调
        /// </summary>
        private void AcceptCallBack(IAsyncResult ar)
        {
            try
            {
                Socket        _socket = listen.EndAccept(ar);
                SessionClient _client = SessionClientPool.GetSessionClient();
                if (_client != null)
                {
                    _client.Initialize(_socket);
                    Console.WriteLine("客户端连接 [{0}]", _socket.RemoteEndPoint.ToString());
                }
                else
                {
                    _socket.Close();
                    Console.WriteLine("警告:连接已满!");
                }

                listen.BeginAccept(AcceptCallBack, null);
            }
            catch (Exception e)
            {
                Console.WriteLine("异步建立客户端连接失败:" + e.Message);
            }
        }