UDP 클라이언트 및 서버 응용 프로그램과 UDP를 통한 사용자 지정 프로토콜이 있습니다.UDP 패킷 바이트 읽기 입도?
각 "프로토콜 패킷"은 페이로드 크기와 페이로드 자체가 포함 된 헤더를 포함합니다.
각 "프로토콜 패킷"은 MTU 크기를 초과하지 않으며 조각화가 부족할 것으로 예상됩니다. ---
클라이언트 전송 헤더 (2 바이트) 및 페이로드 (N < MTU-2 바이트) :
은 현재 내가 ASIO 라이브러리를 사용하여 몇 가지 문제가 발생 해요 :
시간 다이어그램 --->
서버는 페이로드 크기에 대해 확실히 2 바이트 만 읽습니다.
서버는
서버가 페이로드 ..... 아무것도의 N 바이트를받을려고 페이로드의 크기 헤더를받을 수 있습니다. 완료 핸들러는 절대로 발생하지 않습니다.
하는 경우 (디버깅 목적) 클라이언트 전송 또 하나 개의 패킷이 서버 완료 핸들러가 해고 - 나는 ASIO 내 비동기 루프가 괜찮습니다 생각하는 이유입니다 무슨 일이.
또한 서버가 하나의 읽기에 대해 전체 전송 2 + N 바이트를 읽으려고하면 모든 데이터가 수신됩니다.
그래서 저는 조금 혼란스러워합니다. _socket.async_receive_from()을 연속적으로 실행하여 하나의 UDP 데이터 그램의 개별 바이트를 순차적으로 읽을 수 있습니다.
도와 주셔서 감사합니다. 미리 감사드립니다.
서버는 어떻게이 2 바이트를 읽습니까? 그리고, 수신 읽기 처리기가 전송 된 바이트에 대해 말하는 것은 무엇입니까? 내 생각에이 읽기는 단지 2 바이트가 아닌 모든 데이터를 가져옵니다. –
2 바이트가 올바르게 수신되면 "전송 된 바이트"에는 _socket.async_receive_from()이 요청한대로 정확히 2 바이트가 포함됩니다. 그래서 나는 내 관심사를 확인해 줄 사람이 필요하며 이미 설명이있는 것처럼 보인다. 감사 . – user1503944