프로그래밍

C# 구조체 파싱하여 사용 하는 예제

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

통신 시 구조체 형태로 보내게 되면 받는 쪽에서 파싱하여 사용 하게 됩니다.

 

아래 소스도 특정 구조체를 이용한 통신 시 수신부에서 파싱하는 것에 대한 예제입니다.

 

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

 

 public static clsMsg_PType Division_PType(string Data, string IP, int Port)
        {
            try
            {
                clsMsg_PType Result = new clsMsg_PType();
                string[] arr_sTemp;
                string DataTemp = Data.Substring(1, Data.Length - 2);
                if (DataTemp.Substring(DataTemp.Length - 1, 1) == "@")
                    DataTemp = DataTemp.Substring(0, DataTemp.Length - 1);
                arr_sTemp = DataTemp.Split('@');

                if (arr_sTemp.Length >= 2)
                {
                    Result.CLIENT_IP = IP;
                    Result.Port = Port;
                    //MsgID
                    Result.MsgID = Convert.ToInt32(arr_sTemp[0].Trim());
                    //Msg CMD
                    Result.CMD = arr_sTemp[1].Trim();               //2018.08.06 moontari 수정. (ENUM -> string)
                    Result.SUBCMD = int.Parse(arr_sTemp[2].Trim());

                    //Data영역에 값이 있는 Msg와 없는 Msg를 구분하기 위해서
                    if (arr_sTemp.Length >= 4)
                    {
                        //Msg DATA
                        //Result.DATA = arr_sTemp[3].Trim();

                        string[] arrDataTemp = arr_sTemp[3].Split(',');

                        for (int nLoop = 0; nLoop < arrDataTemp.Length; nLoop++)
                        {
                            string[] arrDataTemp2 = arrDataTemp[nLoop].Split('=');
                            Result.SetKeyValue(arrDataTemp2[0], arrDataTemp2[1]);
                        }
                    }
                    else
                    {
                        //Result.DATA = string.Empty;
                    }

                }
                else
                {
                    Result = null;
                }

                return Result;
            }
            catch
            {
                return null;
            }
        }
    }
반응형