PacketData 구조체
struct PacketData
{
public Int16 DataSize;
public Int16 PacketID;
public SByte Type;
public byte[] BodyData;
}
- 패킷 내부 데이터 형식을 나타낸 구조체
- 데이터 크기 / 패킷 ID / 타입 / 데이터 내용물
PacketDump 클래스
Bytes
public class PacketDump
{
public static string Bytes(byte[] byteArr)
{
StringBuilder sb = new StringBuilder("[");
for (int i = 0; i < byteArr.Length; ++i)
{
sb.Append(byteArr[i] + " ");
}
sb.Append("]");
return sb.ToString();
}
}
- 바이트 배열을 받아서 해당 바이트 배열에 [ ] 붙이고 문자열 형태로 바꿔서 반환
- 보통 네트워크 통신에서 주고받는 데이터/파일은 바이트 배열이기 때문에 이 데이터를 이해하기 쉽게 문자열로 변환
- StringBuilder : 문자열을 동적으로 생성하고 수정하는데 쓰는 클래스
- 문자열을 더하는 작업을 할 때 메모리 할당과 복사를 최소화 해서 성능 향상
ErrorNtfPacket
public class ErrorNtfPacket
{
public ERROR_CODE Error;
- Ntf : Notification의 약자로 추정(알림)
- 오류 코드 Error
FromBytes
public bool FromBytes(byte[] bodyData)
{
Error = (ERROR_CODE)BitConverter.ToInt16(bodyData, 0);
return true;
}
- bodyData라는 바이트 배열에서 오류 코드를 추출해서 16비트 정수로 변환하고 ERROR_CODE 열거형으로 변환해서 클래스의 필드에 할당
- bodyData는 패킷의 바디로 추정 → bodyData의 0부터 추출
LoginReqPacket 클래스