Esempio n. 1
0
        /// <summary>
        /// 触发连接成功事件
        /// </summary>
        protected virtual void OnConnectSucceed()
        {
            NetEventHandler hander = ConnectSucceed;

            if (hander != null)
            {
                ConnectSucceed(this, new NetEventArgs("成功连接到服务器"));
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 触发接收数据事件
        /// </summary>
        /// <param name="bin"></param>
        protected virtual void OnReceiveData(object bin)
        {
            NetEventHandler hander = ReceiveData;   //接收到消息事件

            if (hander != null)
            {
                hander(this, new NetEventArgs(bin));
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 触发连接失败事件
        /// </summary>
        /// <param name="err"></param>
        protected virtual void OnConnectFail(Exception err)
        {
            NetEventHandler hander = ConnectFail;   //连接服务器失败事件

            if (hander != null)
            {
                ConnectFail(this, new NetEventArgs(err));
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 触发连接断开事件
        /// </summary>
        /// <param name="err"></param>
        protected virtual void OnDisConnected(Exception err)
        {
            //Stop();
            NetEventHandler hander = DisConnected;  //断开连接事件

            if (hander != null)
            {
                hander(this, new NetEventArgs(err));
            }
        }
Esempio n. 5
0
    public void RegEvent(string tag, NetEventRecv action)
    {
        if (Events.ContainsKey(tag))
        {
            Events.Remove(tag);
        }
        Type            type      = tag.GetType();
        NetEventHandler net_event = new NetEventHandler(type, action);

        Events.Add(tag, net_event);
    }
Esempio n. 6
0
 /// <summary>
 /// 断开所有客户端连接
 /// </summary>
 public void DisConnectAll()
 {
     foreach (KeyValuePair <EndPoint, T> kvp in this.session)
     {
         kvp.Value.DisConnected -= new NetEventHandler(work_DisConnect);
         kvp.Value.Stop();
         //触发客户断开事件
         NetEventHandler handler = DisConnect;
         if (handler != null)
         {
             handler(kvp.Value, new NetEventArgs(new SocketException((int)SocketError.Success)));
         }
     }
     this.session.Clear();
 }
Esempio n. 7
0
        private void clientConnect(IAsyncResult ar)
        {
            TcpListener listener = (TcpListener)ar.AsyncState;

            //接受客户的连接,得连接Socket
            try
            {
                Socket client = listener.EndAcceptSocket(ar);
                client.IOControl(IOControlCode.KeepAliveValues, Keepalive(0, 60000, 5000), null);

                T work = new T();
                work.TcpSocket     = client;
                work.DisConnected += new NetEventHandler(work_DisConnect);

                EndPoint socketPoint = client.RemoteEndPoint;
                if (session.ContainsKey(socketPoint))
                {
                    session[socketPoint] = work;
                }
                else
                {
                    session.Add(socketPoint, work);
                }

                if (ConnectCount < maxsockets)
                {
                    //继续监听客户端连接请求
                    IAsyncResult iar = listener.BeginAcceptSocket(clientConnect, listener);
                }
                else
                {   //达到最大连接客户数,则关闭监听.
                    listener.Stop();
                    this.active = false;
                }

                //客户端连接成功事件
                NetEventHandler handler = Connected;
                if (handler != null)
                {
                    handler(work, new NetEventArgs("接受客户的连接请求"));
                }
                Debug.WriteLine(socketPoint.ToString() + " is Connection...Num" + ConnectCount);
            }
            catch
            {
            }
        }
Esempio n. 8
0
        //客户端断开连接
        private void work_DisConnect(IDataTransmit work, NetEventArgs e)
        {
            EndPoint socketPoint = work.RemoteEndPoint;

            session.Remove(socketPoint);

            //如果已关闭侦听器,则打开,继续监听
            if (ConnectCount == maxsockets)
            {
                listener.Start(this.backlog);
                IAsyncResult iar = listener.BeginAcceptSocket(clientConnect, listener);
                this.active = true;
            }

            //触发客户断开事件
            NetEventHandler handler = DisConnect;

            if (handler != null)
            {
                handler(work, e);
            }
            Debug.WriteLine(socketPoint.ToString() + " is OnDisConnected...Num" + ConnectCount);
        }
Esempio n. 9
0
 public TcpServer(int port)
     : base(port)
 {
     Connected  += new NetEventHandler(server_Connected);
     DisConnect += new NetEventHandler(server_DisConnect);
 }
Esempio n. 10
0
 /// <summary>
 /// 设置委托
 /// </summary>
 /// <param name="handler">消息委托.</param>
 public void SetDelegate(NetEventHandler handler)
 {
     //只写赋值回调
     ReceiveCallback = handler;
 }
Esempio n. 11
0
 public ListenTest(int port) : base(port)
 {
     Connected  += new NetEventHandler(server_Connected);
     DisConnect += new NetEventHandler(server_DisConnect);
 }
Esempio n. 12
0
 public void RegisterEventHandler(NetEventHandler handler)
 {
     m_handler = handler;
 }
Esempio n. 13
0
 public TcpServer(int port)
     : base(port)
 {
     Connected += new NetEventHandler(server_Connected);
     DisConnect += new NetEventHandler(server_DisConnect);
 }