게임 프로그래머의 만담, 게임코디 2nd
0 투표
641 views 만담 (13p)
수정됨 , 641 views

요약

1. tcpu, udp패킷 수신

2. 해당 패킷에 해당하는 클래스를 찾아 역직렬화 해야함(여기가 문제)

3. 어떤 클래스와 호환 되는지 루프 돌려서 전부다 체크하는 방법이 아닌 이상 알 방법이 없음 좀 더 효율적인 방법 궁금

패킷을 수신받아 클래스로 역직렬화 시켜야 하는데 문제는 역직렬화 전에 어떤 클래스와 호환되는지 알아야 하는데 바이트 상태에서 알 방법이 없습니다.

다른 분들은 수신된 패킷 데이터를 어떤식으로 처리하시는지 궁금합니다

 

감사합니다.

만담에 대한 답글을 하려면 로그인 또는 가입해야합니다.

4 answers

0 투표
혹시 설명이 부족하다면 부연설명과 코드첨부를 해드릴수있으니 필요한게있다면 요청부탁드립니다.
답글 (13p)
0 투표
패킷 타입 정의가 있지 않나요..
답글 (5.5kp)
패킷 자체가 바이트인데 type과 size는 알수없지 않나여 역직렬화 되기전까지는?
컨텐츠와 헤더부를 분리해서 전송해도 어떤 컨텐츠가 어떤 헤더껀지 알아야 해서 식별값을 찾기위해서는 결국 역직렬화 해줘야하는데 이때 호환되는지 알수가 없더라구여..
0 투표
패킷 헤더에 type, size등의 정보를 넣는 게 일반적입니다만..
답글 (877p)
패킷 자체가 바이트인데 type과 size는 알수없지 않나여 역직렬화 되기전까지는?
컨텐츠와 헤더부를 분리해서 전송해도 어떤 컨텐츠가 어떤 헤더껀지 알아야 해서 식별값을 찾기위해서는 결국 역직렬화 해줘야하는데 이때 호환되는지 알수가 없더라구여..
바디에 패킷넣지않나여
tcp, udp 통신하고있습니다. 혹시 말씀하신 body는 http 의미하신거져?
본문에 추가 코드 첨부하였습니다.
packet header+payload로 통신하고 header는 구조가 불변입니다.
넵 헤더부는 불변으로 하고있었습니다.

지금 json을 임시적으로 쓰고있는데 역직렬화 과정에서 payload까지 같이 해석이되면서, 추론적으로 payload가 역직렬화가 되었습니다 예를들면 linkedHash 로 변수이름과 값을요.

저는 원객체로 치환하고 싶습니다.

아래는 패킷 클래스 입니다.
class examplePacketObject {
header_a
header_b
object payload
}
http면 response header에 X-Packet-Type 커스텀 헤더 추가
넵 감사합니다.
일단은 json에서 직접 deserialize구현해서 추가해서 해결했습니다. 근데 json 아닌 다른 방식으로할떄는 deserialize 구현 가능 여부 확인을 해봐야할거 같습니다 감사합니다.
0 투표
보통 패킷 전송시 헤더를 만들고 헤더뒤에 데이터를 붙여서 전송합니다.

처음 4byte 는 crc 체크섬

그다음 2byte 는 패킷 전체 크기. 헤더 포함

그다음 2byte 는 패킷 메시지 구분자.
이런식으로여,

그리고 메시지 별로, 함수를 따로 만들어 처리 합니다.

물론, 이전에 tcp, udp 통신 특성에 대해 잘 알고 있어야 합니다.
답글 (40p)
넵 제가 질문을 자세히 설명 못한거 같습니다. 헤더뒤에 붙이고 전송하고 있는데 코드로 처리하기 위해 바이트를 역직렬화 과정이 계속 실패하고 있어서 올리거 거든여

수신받고 클래스로 역직렬화 과정이 좀 궁금한데 뭐 따로 하는게 있을까요?
넵 감사합니다.
일단은 json에서 직접 deserialize구현해서 추가해서 해결했습니다. 근데 json 아닌 다른 방식으로할떄는 deserialize 구현 가능 여부 확인을 해봐야할거 같습니다 감사합니다.

게임 프로그래머의 만담 커뮤니티, 게임코디 입니다

온종일 코드와 씨름하는 우리들의 외로움을 삭이고자 합니다