예제 #1
0
 /// <summary>
 /// SessionManager 연결 성공 이벤트
 /// </summary>
 /// <param name="sender"></param>
 private void OnConnect(object sender)
 {
     ListItemAdd("통합게이트웨이 연결 성공");
     gatewayIPTextBox.Invoke(new MethodInvoker(delegate() { gatewayIPTextBox.Enabled = false; }));
     gatewayPortTextBox.Invoke(new MethodInvoker(delegate() { gatewayPortTextBox.Enabled = false;; }));
     authentiCodeTextBox.Invoke(new MethodInvoker(delegate() { authentiCodeTextBox.Enabled = false; }));
     connectBtn.Invoke(new MethodInvoker(delegate() { connectBtn.Enabled = false; }));
     disconnectBtn.Invoke(new MethodInvoker(delegate() { disconnectBtn.Enabled = true; }));
     CreateParsingThread();
     #region 접속 인증 요청
     //접속 인증 요청 명령 클래스 생성
     IEASProtocolBase protocolBase = IEASProtocolManager.CreateProtocol(0x03);
     //전송 시스템 종류 셋팅
     protocolBase.SenderType = IEASSenderType.SAS;
     //명령 코드에 해당하는 클래스로 캐스팅
     IEASPrtCmd3 prt3 = protocolBase as IEASPrtCmd3;
     //인증 코드 셋팅(32자)
     string authentiCode = authentiCodeTextBox.Text;
     prt3.AuthentiCode = authentiCode;
     //byte[] 형식의 frame 으로 변환
     byte[] sendData = IEASProtocolManager.MakeFrame(prt3);
     //통합게이트웨이로 전송
     if (SessionManager.GetInstance().Send(sendData))
     {
         ListItemAdd("접속 인증 요청 전송");
     }
     else
     {
         ListItemAdd("접속 인증 요청 전송 실패");
     }
     #endregion
 }
예제 #2
0
        /// <summary>
        /// 인증 요청
        /// </summary>
        public bool RequestAuth(string authCode)
        {
            bool result = false;

            try
            {
                IEASProtocolBase protoBase = IEASProtocolManager.CreateProtocolForKCAP(KCAPCmdValue.RequestAuth);
                protoBase.SenderType = IEASSenderType.SWI;
                IEASPrtCmd3 protoCmd3 = protoBase as IEASPrtCmd3;
                protoCmd3.AuthentiCode = authCode;
                byte[] authRequest = IEASProtocolManager.MakeFrameForKCAP(protoCmd3);

                result = this.sessionManager.SendData(authRequest);
            }
            catch (Exception ex)
            {
                System.Console.WriteLine("[CommunicationManager] RequestAuth( " + ex.ToString() + " )");
                FileLogManager.GetInstance().WriteLog("[CommunicationManager] RequestAuth( Exception=[" + ex.ToString() + "] )");

                return(false);
            }

            return(result);
        }
예제 #3
0
        /// <summary>
        /// 파싱된 프로토콜 처리
        /// </summary>
        /// <param name="prtBase"></param>
        private void ProtocolProcessing(IEASProtocolBase prtBase)
        {
            switch (prtBase.CMD)
            {
            case 0x01:
            {
                IEASPrtCmd1 prt1 = prtBase as IEASPrtCmd1;
                ListItemAdd("발령 CAP 메시지 수신 - CAP 메시지 : " + prt1.CAPMessage);
                MessageBox.Show(prt1.CAPMessage, "CAP 메시지 수신", MessageBoxButtons.OK);
                #region 응답 CAP 메시지 전송
                //발령 응답 명령 클래스 생성
                IEASProtocolBase protocolBase = IEASProtocolManager.CreateProtocol(0x02);
                //전송 시스템 종류 셋팅
                protocolBase.SenderType = IEASSenderType.SAS;
                //명령 코드에 해당하는 클래스로 캐스팅
                IEASPrtCmd2 prt2 = protocolBase as IEASPrtCmd2;
                //응답 CAP 메시지 셋팅
                string path = System.Environment.CurrentDirectory + @"\" + ackCAPMessageSampleFileName;
                prt2.CAPMessage = File.ReadAllText(path);
                //byte[] 형식의 frame 으로 변환
                byte[] sendData = IEASProtocolManager.MakeFrame(prt2);
                //frame 전송
                if (SessionManager.GetInstance().Send(sendData))
                {
                    ListItemAdd("응답 CAP 메시지 전송");
                }
                else
                {
                    ListItemAdd("응답 CAP 메시지 전송 실패");
                }
                #endregion
            }
            break;

            case 0x02:
            {
                IEASPrtCmd2 prt2 = prtBase as IEASPrtCmd2;
                ListItemAdd("응답 CAP 메시지 수신 - CAP 메시지 : " + prt2.CAPMessage);
            }
            break;

            case 0x03:
            {
                IEASPrtCmd3 prt3 = prtBase as IEASPrtCmd3;
                ListItemAdd("접속 인증 요청 명령 수신 - 인증코드 : " + prt3.AuthentiCode);
            }
            break;

            case 0x04:
            {
                IEASPrtCmd4 prt4 = prtBase as IEASPrtCmd4;
                if (prt4.AuthentiResult == 1)
                {
                    ListItemAdd("접속 인증 결과 수신 - 접속승인");
                    CreatePollingThread();
                }
                else
                {
                    ListItemAdd("접속 인증 결과 수신 - 접속거부");
                }
            }
            break;

            case 0xFF:
            {
                ListItemAdd("폴링 데이터 수신");
            }
            break;

            default:
            {
                ListItemAdd("Parsing 결과 - 지원하지 않는 명령어 코드 입니다");
            }
            break;
            }
        }