예제 #1
0
        /// <summary>
        /// 대상지(서버)와 연결
        /// </summary>
        /// <returns></returns>
        public bool Connect()
        {
            FileLogManager.GetInstance().WriteLog("[SessionManager] Connect( start )");

            bool result = true;

            try
            {
                if (socket != null && !socket.Connected)
                {
                    FileLogManager.GetInstance().WriteLog("[SessionManager] Connect( 통신 끊긴 상태=> 이벤트를 해제, 소켓 닫음 )");

                    // 끊긴 상태
                    this.socket.connectEvtHandler -= new ConnectEvtHandler(socket_OnOpen);
                    this.socket.closeEvtHandler   -= new CloseEvtHandler(socket_OnClose);
                    this.socket.recvEvtHandler    -= new RecvEvtHandler(socket_OnReceive);
                    this.socket.Close();
                    this.socket = null;

                    return(false);
                }

                if (this.socket == null)
                {
                    FileLogManager.GetInstance().WriteLog("[SessionManager] Connect( 소켓이 존재하지 않음 => 소켓 생성 )");

                    this.socket = new AdengClientSocket();
                    this.socket.connectEvtHandler += new ConnectEvtHandler(socket_OnOpen);
                    this.socket.closeEvtHandler   += new CloseEvtHandler(socket_OnClose);
                    this.socket.recvEvtHandler    += new RecvEvtHandler(socket_OnReceive);
                }

                if (!this.socket.Connected)
                {
                    this.socket.Connect(this.targetIP, this.targetPort);
                }
            }
            catch (Exception ex)
            {
                System.Console.WriteLine("[SessionManager] Connect( " + ex.ToString() + ")");
                FileLogManager.GetInstance().WriteLog("[SessionManager] Connect( " + ex.ToString() + " )");

                if (socket != null)
                {
                    if (this.socket.Connected)
                    {
                        Disconnect();
                    }
                }

                result = false;
                throw ex;
            }

            FileLogManager.GetInstance().WriteLog("[SessionManager] Connect( end )");

            return(result);
        }
예제 #2
0
        /// <summary>
        /// 데이터 전송.
        /// 이 함수는 처리 속도를 고려하여, Connect() 처리가 선행되는 것을 전제한다.
        /// </summary>
        /// <param name="data"></param>
        /// <returns>데이터 전송 결과</returns>
        public bool SendData(byte[] data)
        {
            bool result = true;

            try
            {
                if (this.socket == null)
                {
                    System.Console.WriteLine("[SessionManager] SendData(socket is null)");
                    FileLogManager.GetInstance().WriteLog("[SessionManager] SendData( socket is null )");

                    return(false);
                }
                else if (!this.socket.Connected)
                {
                    System.Console.WriteLine("[SessionManager] SendData(socket is not Connected!!)");
                    FileLogManager.GetInstance().WriteLog("[SessionManager] SendData( socket is not connected!! )");

                    this.socket.connectEvtHandler -= new ConnectEvtHandler(socket_OnOpen);
                    this.socket.closeEvtHandler   -= new CloseEvtHandler(socket_OnClose);
                    this.socket.recvEvtHandler    -= new RecvEvtHandler(socket_OnReceive);

                    this.socket.Close();
                    this.socket = null;

                    System.Console.WriteLine("[SessionManager] SendData(socket is disconnected)");
                    return(false);
                }
                else
                {
                    //
                }

                this.socket.Send(data, data.Length);
            }
            catch (Exception ex)
            {
                System.Console.WriteLine("[SessionManager] SendData(Exception:" + ex.ToString() + ")");
                FileLogManager.GetInstance().WriteLog("[SessionManager] SendData( " + ex.ToString() + " )");

                result = false;
            }

            return(result);
        }
예제 #3
0
        /// <summary>
        /// 대상지(서버)와의 연결 해제
        /// </summary>
        /// <returns></returns>
        public bool Disconnect()
        {
            FileLogManager.GetInstance().WriteLog("[SessionManager] Disconnect( start )");

            if (this.socket == null)
            {
                FileLogManager.GetInstance().WriteLog("[SessionManager] Disconnect( socket is null )");

                return(true);
            }

            bool result = true;

            try
            {
                this.socket.connectEvtHandler -= new ConnectEvtHandler(socket_OnOpen);
                this.socket.closeEvtHandler   -= new CloseEvtHandler(socket_OnClose);
                this.socket.recvEvtHandler    -= new RecvEvtHandler(socket_OnReceive);

                if (this.socket.Connected)
                {
                    this.socket.Close();
                }
                this.socket = null;
            }
            catch (Exception ex)
            {
                System.Console.WriteLine("[SessionManager] Disconnect(Exception:" + ex.ToString() + ")");
                FileLogManager.GetInstance().WriteLog("[SessionManager] Disconnect( Exception=[" + ex.ToString() + " )");

                result      = false;
                this.socket = null;
                throw ex;
            }

            FileLogManager.GetInstance().WriteLog("[SessionManager] Connect( end )");

            return(result);
        }
예제 #4
0
 public ReceiveEvtArgs(AdengClientSocket _socket, byte[] _buff)
 {
     this.socket = _socket;
     this.buff   = _buff;
 }
예제 #5
0
 public ConnectEvtArgs(AdengClientSocket _socket)
 {
     this.socket = _socket;
 }