PacketGenerator5 03_10_패킷 직렬화_PacketGenerator #5_ switch문의 비효율성 개선, case 파싱 자동화 다룰 내용 및 요약 프로토콜이 많이 늘어날 경우 switch문의 비효율성을 개선하고 case문을 만들고 파싱하는 것을 자동화하고자 합니다. 다음과 같은 단계를 진행합니다. 프로토콜이 많이 늘어날 경우 switch문의 비효율성을 개선하고 case문을 만들고 파싱하는 것을 자동화하고자 합니다. 다음과 같은 단계를 진행합니다. IPacket 인터페이스를 정의하고 구현합니다. 자동화를 위해 PacketFormat을 수정하고, .bat 파일로 갱신합니다. ClientSession의 OnRecvPacket 코드를 자동화합니다. 3-1) 코드 이주 PacketHandler와 PacketManager 클래스를 생성하고 ClientSession의 OnRecvPacket에서 받은 데이터를 사용하는 코드를 옮겨줍니다. Pa.. Server programming 2023. 4. 20. 03_09_패킷 직렬화_PacketGenerator #4_패킷 파일 자동 생성 배치 지난 시간에 생성된 코드를 ServerSession, ClientSession에 각각 수동으로 붙여 넣는게 문제였습니다. 패킷은 컨텐츠 만들면서 계속 변화할텐데 만들 때 마다 수동으로 복사하는 건 힘드니까 오늘은 그 부분을 자동으로 처리하는 방법을 알아볼 것 입니다. 이를 위해 다음과 같은 과정을 거칩니다. GenPackets.cs이 생성될 장소 만들기 PDL의 경로를 받을 string 변수 선언 실행 파일 및 빌드된 파일이 생성되는 위치 변경 PDL의 기본 경로 설정 bat파일을 이용해 GenPacket.cs 생성 GenPacket.cs 생성되는 위치를 bat파일에서 설정 1. GenPackets.cs이 생성될 장소 만들기 DummyClient→추가→ 새항목 GenPackets라는 클래스를 만들어 준다.. Server programming 2023. 4. 19. 03_08_패킷 직렬화_PacketGenerator#3_전체 코드 생성 이번 시간에 한 내용 GetPacket.cs 파일 안의 전체 코드 생성을 위한 포멧을 정의 하고 그걸 이용해 코드를 생성한다. PDL에 패킷이 여러개로 정의 된 경우 테스트 한다. 생성된 코드가 정렬되게 수정한다. 타입이 byte인 경우 처리될 수 있게 코드 포멧을 추가하고 코드를 생성한다. 2중 List가 지원되는지 테스트 한다. 1. 파일 자체에 대한 포멧 정의 하기 지난 시간에 패킷 자동화에 대한 윤곽을 봤었는데 이제 앞으로는 GenPackets.cs에 있는 내용을 수동으로 복붙해서 붙여 넣는게 아니라, GenPackets라는 파일 자체든 클라든 서버든 필요한 쪽에서 참조를 해가지고, 사용하게끔 수정을 해야 한다. 이 파일이 완전체로 사용되기 위해서 뭐가 빠졌는지 생각을 해보면, ServerSess.. Server programming 2023. 4. 18. 03_07_패킷 직렬화_PacketGenerator #2_코드 자동 생성, List 추가 지난 시간에 작업한 코드를 이용해서 주어진 입력을 기반으로 패킷을 생성하고, 생성된 패킷을 GenPackets.cs 파일에 저장해 그 코드를 이용해 실제로 작동하는시 실험 해 봅니다. 지난 시간에 안해준 List의 코드를 만드는 부분도 작성해 봅니다. 지난 시간에 이걸 왜 했는지 아직 와닿지 않을 수 있는데 코드를 만들어 보면 쉽게 이해가 갈 것이다. 다시 프로그램으로 돌아와서 결국에는 우리가 하고 싶은 건 무엇이냐 namespace PacketGenerator { class Program { static void Main(string[] args) { XmlReaderSettings settings = new XmlReaderSettings() { IgnoreComments = true, IgnoreW.. Server programming 2023. 4. 18. 03_06_패킷 직렬화_PacketGenerator #1_XML파일 사용해 자동으로 패킷 생성하기 위한 첫 작업 이번 포스팅에서는 자동으로 패킷을 생성하는 방법에 대해 설명합니다. 먼저, XML 파일을 사용하여 패킷의 포맷을 정의하고, 이를 기반으로 자동으로 패킷을 생성하는 방법에 대해 다룹니다. 그 과정 중의 첫단계로 XML 파일을 만들어 보고, Main에서 XmlReader를 이용해 읽어들여 출력을 하고, 더 나아가 Xml 파일의 전부가 아닌 packet부분만 출력을 하기 위해 Parse하는 코드와 PacketFormat을 만드는 작업을 해 봅니다. 자동화 할 때 거치게 되는 단계 : 하드코딩으로 만들어 본 다음에 (이전 시간까지의 작업) 최대한 재사용할 수 있는 것들을 자동화 코드로 빼주면 된다. (이제 할 것) 지난 시간까지 작업한 코드에서 Packet을 사용하지 말지가 고민이야. size랑 packetId.. Server programming 2023. 4. 14. 이전 1 다음