/// <summary> /// 触发连接成功事件 /// </summary> protected virtual void OnConnectSucceed() { NetEventHandler hander = ConnectSucceed; if (hander != null) { ConnectSucceed(this, new NetEventArgs("成功连接到服务器")); } }
/// <summary> /// 触发接收数据事件 /// </summary> /// <param name="bin"></param> protected virtual void OnReceiveData(object bin) { NetEventHandler hander = ReceiveData; //接收到消息事件 if (hander != null) { hander(this, new NetEventArgs(bin)); } }
/// <summary> /// 触发连接失败事件 /// </summary> /// <param name="err"></param> protected virtual void OnConnectFail(Exception err) { NetEventHandler hander = ConnectFail; //连接服务器失败事件 if (hander != null) { ConnectFail(this, new NetEventArgs(err)); } }
/// <summary> /// 触发连接断开事件 /// </summary> /// <param name="err"></param> protected virtual void OnDisConnected(Exception err) { //Stop(); NetEventHandler hander = DisConnected; //断开连接事件 if (hander != null) { hander(this, new NetEventArgs(err)); } }
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); }
/// <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(); }
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 { } }
//客户端断开连接 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); }
public TcpServer(int port) : base(port) { Connected += new NetEventHandler(server_Connected); DisConnect += new NetEventHandler(server_DisConnect); }
/// <summary> /// 设置委托 /// </summary> /// <param name="handler">消息委托.</param> public void SetDelegate(NetEventHandler handler) { //只写赋值回调 ReceiveCallback = handler; }
public ListenTest(int port) : base(port) { Connected += new NetEventHandler(server_Connected); DisConnect += new NetEventHandler(server_DisConnect); }
public void RegisterEventHandler(NetEventHandler handler) { m_handler = handler; }