2012-10-27 7 views
1

다양한 양의 UDP 소켓을 통해 서버로부터 정보 구조체를받는 채팅 클라이언트를 만들고 있습니다. 이 구조체 각각은 클라이언트에게 어떤 유형의 구조체인지를 알려주는 헤더로 시작합니다. recvfrom을 사용하여 크기가 무엇이든 관계없이 전체 구조체를 검색 한 다음 헤더를 기반으로 필요한 구조체에 캐스트하거나 헤더를 읽고 구조체를 결정한 다음 읽을 수 있습니까? 구조체 조각에 의해?recvfrom - 임의의 크기의 구조체를 받고 있습니까?

답변

3

UDP 패킷은 완전한 데이터 그램으로 만받을 수 있습니다. 모든 메시지에 대해 충분히 큰 버퍼로 recvfrom을 수행 한 다음 적절하게 캐스팅해야합니다.

+0

OK 그렇다면 패킷의 최대 크기가 128 바이트라고 알고 있다면 recvfrom을 계속 요청하지 않으면 차단할 수 없지만 16 바이트 구조체 만 가져옵니다. – theeggman85

+0

수정하십시오. 단일 데이터 그램에서 최대 128 바이트를 수신합니다. 누군가 16 바이트 만 보내는 경우,'recvfrom'는 16 바이트만을 반환합니다. –

관련 문제