/// <summary> /// ������Ϣ /// </summary> /// <param name="Data">Ҫ���͵���Ϣ</param> /// <param name="myTcp">������Ϣ�Ķ���</param> private void Send(byte[] Data, MyTcp myTcp) { Data= SealedMsg.SendMsgBytes(Data); try { if(myTcp.Socket.Connected) myTcp.Socket.BeginSend(Data,0,Data.Length, System.Net.Sockets.SocketFlags.None,new AsyncCallback(AsyncClientSend),myTcp); } catch (Exception ex) { Error(myTcp, new IMLibrary.Net.SockEventArgs(7, ex.Message)); } }
/// <summary> /// �첽����Socket�������� /// </summary> /// <param name="aResult">IAsyncResult�ӿڶ���</param> private void AsyncAcceptSocket(IAsyncResult aResult) { System.Net.Sockets.Socket sock = (System.Net.Sockets.Socket)aResult.AsyncState; try { if (IsStopServer == false)//���û����ֹ���� { System.Net.Sockets.Socket handler = sock.EndAccept(aResult);//���������� //�ж�handler�Dz��DZ�����Ϊnull�����Ϊnull��ʾ������ִ��AcceptSocket�������û���OnAcceptSocket�а������ͷŵ� if (handler != null) { //�ж��Ƿ����ӣ����Ϊfalse����ʾ������ִ��AcceptSocket�������û���OnAcceptSocket�а����ӶϿ��� if (handler.Connected) { if (_clientSocketList.Count == AllowMaxConnectCount)//�������������ﵽ����ʱ��ֹͣ�����µķ��� { MaxConnectCountArrival(this, new IMLibrary.Net.SockEventArgs());//�������������ﵽ�����¼� handler.Shutdown(System.Net.Sockets.SocketShutdown.Both); handler.Close(); handler = null; } else { MyTcp myTcp = new MyTcp(); myTcp.Socket = handler; _clientSocketList.Add(myTcp); myTcp.OnClose += new MyTcp.CloseEventHandler(myTcp_OnClose);//����MyTcp��Socket�ر��¼� AcceptClientSocket(myTcp, new IMLibrary.Net.SockEventArgs());//���������������¼� if (IsStopServer == false)//���û����ֹ��������ʼ�첽���������ӵ����� myTcp.Socket.BeginReceive(myTcp.Buffer, 0, myTcp.Buffer.Length, System.Net.Sockets.SocketFlags.None, new AsyncCallback(AsyncClientSocketReceive), myTcp); } } else { handler = null; } } if (IsStopServer == false)//���û����ֹ������������첽�������������� { sock.BeginAccept(new AsyncCallback(AsyncAcceptSocket), sock); } } } catch (Exception ex) { //�������ӹ��̷����쳣�ر����� Stop(); Error(this, new IMLibrary.Net.SockEventArgs(5, ex.Message)); } }
/// <summary> /// �����رտͻ������� /// </summary> /// <param name="myTcp">�ͻ��˶���</param> private void CloseClientSocket(MyTcp myTcp) { if (myTcp.Closed == true) return; myTcp.Closed = true; try { if (myTcp.Socket != null) { if (myTcp.Socket.Connected) myTcp.Socket.Shutdown(System.Net.Sockets.SocketShutdown.Both); myTcp.Socket.Close(); myTcp.Socket = null; } try { _clientSocketList.Remove(myTcp); Close(myTcp, new IMLibrary.Net.SockEventArgs());//�����ر��¼� } catch { } } catch (Exception ex) { Error(myTcp, new IMLibrary.Net.SockEventArgs(3, ex.Message)); } }
/// <summary> /// ������Ϣ(�첽����) /// </summary> /// <param name="Data">Ҫ���͵���Ϣ</param> /// <param name="myTcp">������Ϣ��myTcp����</param> public void SendData(byte[] Data, MyTcp myTcp) { Send(Data, myTcp); }