WIZnet Developer Forum

[W5300] RMSR 설정값 보다 더 많이 수신될경우 어떻게 되나요?

u8 tx_mem_conf[8] = {12, 12, 4, 4, 8, 8, 8, 8}; // for setting TMSR regsiter
u8 rx_mem_conf[8] = {1, 2, 13, 14, 8, 8, 8, 8}; // for setting RMSR regsiter

1KB = 1000Byte로 계산하겠습니다

레지스터를 위와 같이 설정을 하였습니다.
소켓1번 Rx버퍼 = 2 KB

소켓 1번에 수신이 600 Byte씩 4번이 오면
이 경우 4번째에는 1.8KB상태에서 600Byte들어오게 됩니다.

  1. 600Byte 중 200Byte만 받아져서 2KB가 저장되고 400Byte가 버려지게 되나요?
  2. 4번째를 받게되면 2KB를 넘기기 때문에 600Byte 전부 버려지게 되나요?
  3. 1번째 보냈던 600Byte 중 필요한 400Byte 가 소멸하고 2KB가 되는 건가요?

Tx의 경우 한번에 보낼때 TMSR 값보다 적은 데이터로 SEND OK를 확인하고 진행하기 때문에 문제가 없어보이는데
수신의 경우 실시간으로 받아져서 해당 소켓이 RMSR 설정값보다 recvfrom 함수를 이용하여 읽지 않았을 때 어떻게 처리되는지 궁금합니다.

안녕하세요
TCP의 경우 RMSR보다 더많이 수신될 경우 상대방측에서 재전송을하여 모두 수신할 수 있지만,
UDP의 경우 수신하지 못하게됩니다.
따라서 1 또는 2인 경우 인데 정확하게 확인 후 다시 답변드리도록 하겠습니다.

일단 2번 기준으로 생각하고 진행해야겠네요.
확인되시면 답변 부탁 드립니다.
감사합니다.

안녕하세요
확인결과 2번과 같이 처리됩니다.
감사합니다.

Copyright © 2017 WIZnet Co., Ltd. All Rights Reserved.