using System; using System.Collections.Generic; using System.Text; using System.Threading; using System.Collections; using System.Net.NetworkInformation; using System.Runtime.InteropServices; using Cosmos.BaseFrame; using Cosmos.UserFrame; using Cosmos.ServiceProvider; using Cosmos.Common; /*-----------------------------------------------------------------------------------------------*/ // 설 명 : SC / HQ IRT Request (SC / 본부 IRT 요청) // 작 성 자 : // 변경 이력 : /*-----------------------------------------------------------------------------------------------*/ namespace Cosmos.BackgroundDown { public class NetworkIRT { private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출 private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체) private PosStatus m_cPosStatus; // 기본정보 참조 private DeviceStatus m_cDevStatus; // 장비정보 참조 /// /// Sending Socket (전송 소켓) /// private static TcpSocket m_IrtSocket = null; /// /// IP /// private string m_ServerIp = ""; /// /// Port /// private int m_ServerPort = 0; /// /// TimeOut /// private int m_ServerTimeout = 10000; /// --------------------------------------------------------------------------------------------- /// /// Constructor (생성자) /// /// --------------------------------------------------------------------------------------------- public NetworkIRT() { m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보 m_cDevStatus = (DeviceStatus)StateObject.DEVICE; // POS 장치정보 (PDA) } #region OnLine 상태체크 /// /// Get network online status with Ping check. (Ping체크로 network Online상태를 취득한다,) /// /// Ip address /// True : online false : Offline private int CheckNetworkOnline(string pHostAddress) { //Ping Check (Ping 체크) Ping pingSender = new Ping(); PingOptions optins = new PingOptions(); optins.DontFragment = true; string data = "aaa"; byte[] buffer = Encoding.ASCII.GetBytes(data); int timeout = 120; PingReply reply = pingSender.Send(pHostAddress, timeout, buffer, optins); if (reply.Status == IPStatus.Success) return UserCom.OK; else return UserCom.NG; } #endregion #region 암호화 편집 /// /// 암호화 위해 전문 편집 /// /// 평문 /// 암호문, 에러시 평문 리턴 private byte[] EncryptData(byte[] plainData) { int nNowPos = 0; //통신헤더전문편집 string[] aCommHead = new string[Column.COMM_HEADER.LEN.Length]; ItemColumn.ParseMessage(Column.COMM_HEADER.LEN, Column.COMM_HEADER.TYPE, plainData, ref nNowPos, ref aCommHead); string sPosNo = aCommHead[Column.COMM_HEADER.SEQ.PosNo].ToString(); //string sRegNo = aCommHead[Column.COMM_HEADER.SEQ.RegNo].ToString(); string sRegNo = ""; string sMsgLen = aCommHead[Column.COMM_HEADER.SEQ.MsgLen].ToString(); string sEncType = aCommHead[Column.COMM_HEADER.SEQ.EncType].ToString(); byte[] byteEncryptData = null; byte[] editedAllData = null; if (sEncType == "0") // "0" 평문 { //Tran헤더 포함 전문 데이터 byte[] tranBytes = new byte[plainData.Length - nNowPos]; Array.Copy(plainData, nNowPos, tranBytes, 0, plainData.Length - nNowPos); //암호화 byteEncryptData = AES.DynamicKeyEncrypt(sPosNo, sRegNo, tranBytes); int iMsgLen = nNowPos + byteEncryptData.Length; aCommHead[Column.COMM_HEADER.SEQ.MsgLen] = iMsgLen.ToString(); //공통헤더와 암호문 더해진 길이 aCommHead[Column.COMM_HEADER.SEQ.EncType] = "1"; //0:평문 1:암호화 string sChangedCommHeader = ItemColumn.MakeMessage(aCommHead, Column.COMM_HEADER.LEN, Column.COMM_HEADER.TYPE); byte[] byteCommHeader = Encoding.UTF8.GetBytes(sChangedCommHeader); editedAllData = new byte[iMsgLen]; Array.Copy(byteCommHeader, editedAllData, byteCommHeader.Length); Array.Copy(byteEncryptData, 0, editedAllData, byteCommHeader.Length, byteEncryptData.Length); return editedAllData; } else // "1" 암호문 { return plainData; } } #endregion #region 복호화 편집 /// /// 복호화 위해 전문 편집 /// /// /// private byte[] DecryptData(byte[] EncryptData) { int nNowPos = 0; //통신헤더전문편집 string[] aCommHead = new string[Column.COMM_HEADER.LEN.Length]; ItemColumn.ParseMessage(Column.COMM_HEADER.LEN, Column.COMM_HEADER.TYPE, EncryptData, ref nNowPos, ref aCommHead); string sPosNo = aCommHead[Column.COMM_HEADER.SEQ.PosNo].ToString(); //string sRegNo = aCommHead[Column.COMM_HEADER.SEQ.RegNo].ToString(); string sRegNo = ""; string sMsgLen = aCommHead[Column.COMM_HEADER.SEQ.MsgLen].ToString(); string sEncType = aCommHead[Column.COMM_HEADER.SEQ.EncType].ToString(); byte[] bytePlainData = null; byte[] editedAllData = null; if (sEncType == "1") //복호화 { //Tran헤더 포함 전문 데이터 byte[] tranBytes = new byte[EncryptData.Length - nNowPos]; Array.Copy(EncryptData, nNowPos, tranBytes, 0, tranBytes.Length); //복호화 bytePlainData = AES.DynamicKeyDecrypt(sPosNo, sRegNo, tranBytes); int iMsgLen = nNowPos + bytePlainData.Length; aCommHead[Column.COMM_HEADER.SEQ.MsgLen] = iMsgLen.ToString(); //공통헤더와 암호문 더해진 길이 aCommHead[Column.COMM_HEADER.SEQ.EncType] = "0"; //0:평문 1:암호화 string sChangedCommHeader = ItemColumn.MakeMessage(aCommHead, Column.COMM_HEADER.LEN, Column.COMM_HEADER.TYPE); byte[] byteCommHeader = Encoding.Default.GetBytes(sChangedCommHeader); editedAllData = new byte[byteCommHeader.Length + bytePlainData.Length]; Array.Copy(byteCommHeader, editedAllData, byteCommHeader.Length); Array.Copy(bytePlainData, 0, editedAllData, byteCommHeader.Length, bytePlainData.Length); return editedAllData; } else { return EncryptData; } } #endregion #region IRT Send/Receive /// /// IRT전문의 Send/Receive /// /// /// /// private int SendReceiveData(byte[] pSendData, ref byte[] pRecvData) { int nRecvLen = 0; int nStat = BaseCom.NG; byte[] rRecvData = null; try { m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout); // Data Send & Receive nRecvLen = m_IrtSocket.SendReceiveData(pSendData, ref rRecvData, m_ServerTimeout); if (nRecvLen > 0) { pRecvData = rRecvData; nStat = BaseCom.OK; } else { pRecvData = null; } m_IrtSocket.Close(); } catch (Exception e) { if (m_IrtSocket != null) m_IrtSocket.Close(); UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, "NetworkIRT.SendReceiveData()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString()); } finally { } System.Threading.Thread.Sleep(100); return nStat; } /// /// IRT전문의 Send/Receive /// /// /// /// private int SendReceiveData(string pSendData, ref string pRecvData) { int nRecvLen = 0; int nStat = BaseCom.NG; string rRecvData = ""; try { m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout); // Data Send & Receive nRecvLen = m_IrtSocket.SendReceiveData(pSendData, ref rRecvData, m_ServerTimeout); if (nRecvLen > 0) { pRecvData = rRecvData; nStat = BaseCom.OK; } else { pRecvData = ""; nStat = nRecvLen; } m_IrtSocket.Close(); } catch (Exception e) { if (m_IrtSocket != null) m_IrtSocket.Close(); UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, "NetworkIRT.SendReceiveData()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString()); } finally { } System.Threading.Thread.Sleep(100); return nStat; } #endregion #region IRT 암호화/복화화 전송 /// /// IRT String로의 Send/Recv /// /// /// /// /// /// /// public int IRTSendReceive(string sIP, int iPort, int iTimeOut, string sComm, ref string sRecvData) { int nStat = 9; string sReturn = string.Empty; m_ServerIp = sIP; m_ServerPort = iPort; m_ServerTimeout = iTimeOut; byte[] bEditedSendData = null; if (m_ServerIp != "" && m_ServerPort != 0) { //암호화 if (sComm.Length != 0) { //bEditedSendData = EncryptData(Encoding.Default.GetBytes(sComm)); bEditedSendData = Encoding.Default.GetBytes(sComm); UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명)) "NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sComm); } else { UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명)) "NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] SendData is Null"); } //SendReceive nStat = SendReceiveData(Encoding.Default.GetString(bEditedSendData, 0, bEditedSendData.Length), ref sReturn); //복호화 if (sReturn.Length != 0) { byte[] byteRecv = DecryptData(Encoding.Default.GetBytes(sReturn)); sRecvData = Encoding.Default.GetString(byteRecv, 0, byteRecv.Length); UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명)) "NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sRecvData); } else { UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명)) "NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] RecvData Is Null"); } } return nStat; } /// /// IRT Byte로의 Send/Recv /// /// /// /// /// /// /// public int IRTSendReceive(string sIP, int iPort, int iTimeOut, byte[] comm, ref byte[] sRecvData) { int nStat = 9; string sReturn = string.Empty; m_ServerIp = sIP; m_ServerPort = iPort; m_ServerTimeout = iTimeOut; byte[] bEditedSendData = null; if (m_ServerIp != "" && m_ServerPort != 0) { //암호화 if (comm != null) { bEditedSendData = EncryptData(comm); string sTmpLog = Encoding.Default.GetString(comm, 0, comm.Length); UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명)) "NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sTmpLog); } else { UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명)) "NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] SendData Is Null"); } //SendReceive nStat = SendReceiveData(bEditedSendData, ref sRecvData); //복호화 if (sRecvData != null) { byte[] sDecryptRecvData = DecryptData(sRecvData); sRecvData = sDecryptRecvData; string sTmpLog = Encoding.Default.GetString(sDecryptRecvData, 0, sDecryptRecvData.Length); UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명)) "NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sTmpLog); } else { UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명)) "NetworkIRT.IRTSendReceive()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] RecvData Is Null"); } } return nStat; } #endregion #region IRT 전송 - 외부 VAN /// /// IRT String로의 Send/Recv - 외부 Van /// /// /// /// /// /// /// /// /// public int IRTSendReceiveEx(string sIP, int iPort, int iTimeOut, string sSendData, ref string sRecvData, int nRecvDataLen, string sAckData) { return IRTSendReceiveEx(sIP, iPort, iTimeOut, sSendData, ref sRecvData, nRecvDataLen, sAckData, false); } public int IRTSendReceiveEx(string sIP, int iPort, int iTimeOut, string sSendData, ref string sRecvData, int nRecvDataLen, string sAckData, bool bErrorSkip) { int nStat = BaseCom.NG; try { sRecvData = ""; if (sIP == "" || iPort == 0) return nStat; // Connect 설정 m_ServerIp = sIP; m_ServerPort = iPort; m_ServerTimeout = iTimeOut; m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout); UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명)) "NetworkIRT.IRTSendReceiveEx()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sSendData); // Data Send & Receive System.Diagnostics.Debug.Print("요청=" + sSendData); nStat = m_IrtSocket.SendReceiveData(sSendData, ref sRecvData, m_ServerTimeout, nRecvDataLen, sAckData, bErrorSkip); System.Diagnostics.Debug.Print("응답=" + sRecvData); if (nStat > 0) nStat = BaseCom.OK; m_IrtSocket.Close(); UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명)) "NetworkIRT.IRTSendReceiveSEx()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sRecvData); } catch (Exception e) { if (m_IrtSocket != null) m_IrtSocket.Close(); UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, "NetworkIRT.SendReceiveDataEx()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString()); } System.Threading.Thread.Sleep(100); return nStat; } /// /// IRT Byte로의 Send/Recv - 외부 Van /// /// /// /// /// /// /// /// /// public int IRTSendReceiveEx(string sIP, int iPort, int iTimeOut, byte[] bSendData, ref byte[] bRecvData, int nRecvDataLen, byte[] sAckData) { int nStat = BaseCom.NG; try { bRecvData[0] = 0; if (sIP == "" || iPort == 0) return nStat; // Connect 설정 m_ServerIp = sIP; m_ServerPort = iPort; m_ServerTimeout = iTimeOut; m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout); UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명)) "NetworkIRT.IRTSendReceiveEx()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + Encoding.Default.GetString(bSendData, 0, bSendData.Length)); // Data Send & Receive System.Diagnostics.Debug.Print("요청=" + Encoding.Default.GetString(bSendData, 0, bSendData.Length)); nStat = m_IrtSocket.SendReceiveData(bSendData, ref bRecvData, m_ServerTimeout, nRecvDataLen, sAckData); System.Diagnostics.Debug.Print("응답=" + Encoding.Default.GetString(bRecvData, 0, bRecvData.Length)); if (nStat > 0) nStat = BaseCom.OK; m_IrtSocket.Close(); UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명)) "NetworkIRT.IRTSendReceiveEx()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + Encoding.Default.GetString(bRecvData, 0, bRecvData.Length)); } catch (Exception e) { if (m_IrtSocket != null) m_IrtSocket.Close(); UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, "NetworkIRT.SendReceiveDataEx()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString()); } return nStat; } #endregion #region IRT 전송 - 외부 VAN (전문길이 위치지정) /// /// IRT String로의 Send/Recv - 외부 Van (길이 위치지정) /// /// /// /// /// /// /// /// /// /// public int IRTSendReceiveLen(string sIP, int iPort, int iTimeOut, string sSendData, ref string sRecvData, bool bFullSize, int nRecvDataLen, int nRecvDataStartPosion) { int nStat = BaseCom.NG; try { sRecvData = ""; if (sIP == "" || iPort == 0) return nStat; // Connect 설정 m_ServerIp = sIP; m_ServerPort = iPort; m_ServerTimeout = iTimeOut; m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout); UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명)) "NetworkIRT.IRTSendReceiveLen()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sSendData); // Data Send & Receive System.Diagnostics.Debug.Print("요청=" + sSendData); nStat = m_IrtSocket.SendReceiveData(sSendData, ref sRecvData, m_ServerTimeout, bFullSize, nRecvDataLen, "", nRecvDataStartPosion, false ); System.Diagnostics.Debug.Print("응답=" + sRecvData); if (nStat > 0) nStat = BaseCom.OK; m_IrtSocket.Close(); UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명)) "NetworkIRT.IRTSendReceiveLen()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sRecvData); } catch (Exception e) { if (m_IrtSocket != null) m_IrtSocket.Close(); UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, "NetworkIRT.SendReceiveDataEx()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString()); } System.Threading.Thread.Sleep(100); return nStat; } /// /// IRT Byte로의 Send/Recv - 외부 Van (전문길이 위치지정) /// /// /// /// /// /// /// /// /// public int IRTSendReceiveLen(string sIP, int iPort, int iTimeOut, byte[] bSendData, ref byte[] bRecvData, int nRecvDataLen, int nRecvDataStartPosion) { int nStat = BaseCom.NG; try { bRecvData[0] = 0; if (sIP == "" || iPort == 0) return nStat; // Connect 설정 m_ServerIp = sIP; m_ServerPort = iPort; m_ServerTimeout = iTimeOut; m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout); UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명)) "NetworkIRT.IRTSendReceiveLen()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + Encoding.Default.GetString(bSendData, 0, bSendData.Length)); // Data Send & Receive System.Diagnostics.Debug.Print("요청=" + Encoding.Default.GetString(bSendData, 0, bSendData.Length)); nStat = m_IrtSocket.SendReceiveData(bSendData, ref bRecvData, m_ServerTimeout, nRecvDataLen, null, nRecvDataStartPosion); System.Diagnostics.Debug.Print("응답=" + Encoding.Default.GetString(bRecvData, 0, bRecvData.Length)); if (nStat > 0) nStat = BaseCom.OK; m_IrtSocket.Close(); UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명)) "NetworkIRT.IRTSendReceiveLen()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + Encoding.Default.GetString(bRecvData, 0, bRecvData.Length)); } catch (Exception e) { if (m_IrtSocket != null) m_IrtSocket.Close(); UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, "NetworkIRT.SendReceiveDataLen()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString()); } return nStat; } #endregion #region IRT Byte로의 Send/Recv - 외부 Van (Bypass Byte) /// /// IRT Byte로의 Send/Recv - 외부 Van (Bypass Byte) /// /// /// /// /// /// /// /// public int ByPassSendReceiveData(string sIP, int iPort, int iTimeOut, byte[] bSendData, ref byte[] bRecvData, int nRecvDataLen) { int nStat = BaseCom.NG; try { //bRecvData[0] = 0; if (sIP == "" || iPort == 0) return nStat; // Connect 설정 m_ServerIp = sIP; m_ServerPort = iPort; m_ServerTimeout = iTimeOut; m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout); UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명)) "NetworkIRT.IRTSendReceiveLen()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + Encoding.Default.GetString(bSendData, 0, bSendData.Length)); // Data Send & Receive System.Diagnostics.Debug.Print("요청=" + Encoding.Default.GetString(bSendData, 0, bSendData.Length)); nStat = m_IrtSocket.ByPassSendReceiveData(bSendData, nRecvDataLen, ref bRecvData, m_ServerTimeout); System.Diagnostics.Debug.Print("응답=" + Encoding.Default.GetString(bRecvData, 0, bRecvData.Length)); if (nStat > 0) nStat = BaseCom.OK; m_IrtSocket.Close(); UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명)) "NetworkIRT.IRTSendReceiveLen()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + Encoding.Default.GetString(bRecvData, 0, bRecvData.Length)); } catch (Exception e) { if (m_IrtSocket != null) m_IrtSocket.Close(); UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, "NetworkIRT.SendReceiveDataLen()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString()); } return nStat; } #endregion } }