프로그래밍

C# TCP/IP 통신 서버/클라이언트 간 메세지 송신 부

준이바라기얍 2021. 8. 9. 15:44
반응형

서버 클라이언트간 메세지 송신 구현 부입니다.

 

메세지형태가 클래스를 보내는 식으로 되어있습니다.

 

참고하시어 사용 바랍니다.

/// <summary>
        /// NType Send Massage
        /// </summary>
        /// <param name="NMSG">NType Class </param>
        public void SendMSG(clsMsg_NType NMSG)
        {
            try
            {
                if (NMSG.Port == 0)
                    NMSG.Port = ServerPort;

                string KEY = NMSG.CLIENT_IP + ":" + NMSG.Port;

                if (clients[KEY] == null) return;

                if (clients.ContainsKey(KEY))
                    clients[KEY].NQueue.Enqueue(NMSG);
            }
            catch (Exception ex)
            {
                OnSystemMsg(clsConfigManager.MSGType.ToString() + " MSG SEND ERROR " + ex.ToString());
                clsMSGLOG.SetLOG(MSGLOGTYPE.SYSTEM, clsConfigManager.MSGType.ToString() + " MSG SEND ERROR " + ex.ToString());
            }
        }

        /// <summary>
        /// PType Send Massage
        /// </summary>
        /// <param name="NMSG">NType Class </param>
        public void SendMSG(clsMsg_PType NMSG)
        {
            try
            {
                if (NMSG.CLIENT_IP == string.Empty)
                    NMSG.CLIENT_IP = clients.FirstOrDefault().Key.Split(new char[] { ':' })[0];

                if (NMSG.Port == 0)
                    NMSG.Port = int.Parse(clients.FirstOrDefault().Key.Split(new char[] { ':' })[1]);

                string KEY = NMSG.CLIENT_IP + ":" + NMSG.Port;

                if (clients[KEY] == null) return;

                if (NMSG.MsgID == 0)
                    NMSG.MsgID = _SendSystemByte++;

                if (clients.ContainsKey(KEY))
                    clients[KEY].PQueue.Enqueue(NMSG);
            }
            catch (Exception ex)
            {
                OnSystemMsg(clsConfigManager.MSGType.ToString() + " MSG SEND ERROR " + ex.ToString());
                clsMSGLOG.SetLOG(MSGLOGTYPE.SYSTEM, clsConfigManager.MSGType.ToString() + " MSG SEND ERROR " + ex.ToString());
            }
        }

        public void ReplyMSG(clsMsg_PType NMSG)
        {
            try
            {
                //if (NMSG.CLIENT_IP == string.Empty)
                //    NMSG.CLIENT_IP = clients.FirstOrDefault().Key.Split(new char[] { ':' })[0];

                //if (NMSG.Port == 0)
                //    NMSG.Port = int.Parse(clients.FirstOrDefault().Key.Split(new char[] { ':' })[1]);

                string KEY = NMSG.CLIENT_IP + ":" + NMSG.Port;

                if (clients[KEY] == null) return;

                //if (NMSG.MsgID == 0)
                //    NMSG.MsgID = _SendSystemByte++;

                if (clients.ContainsKey(KEY))
                    clients[KEY].PQueue.Enqueue(NMSG);
            }
            catch (Exception ex)
            {
                OnSystemMsg(clsConfigManager.MSGType.ToString() + " MSG SEND ERROR " + ex.ToString());
                clsMSGLOG.SetLOG(MSGLOGTYPE.SYSTEM, clsConfigManager.MSGType.ToString() + " MSG SEND ERROR " + ex.ToString());
            }
        }
반응형