[W5300] recv함수의 반환값이 어떻게 되나요?
Ethernet Chips
No replies yet. Be the first to reply.
Join the discussion.
Ethernet Chips
No replies yet. Be the first to reply.
Join the discussion.
Share projects and connect with makers.
Joined before the site update? first.
New to WIZnet Makers?
We sent a verification link to your address. Open it to activate your account, then log in.
Accounts from this email provider are reviewed by an administrator after verification. Approval usually takes one business day.
Already have an account?
Enter your email address. If it belongs to an account, we'll send a link to set a new password. Members who joined before the site update use this to set their password.
If an account uses that address, we sent a link to set a new password. The link works once and expires in 30 minutes.
Know your password?
Need an account?
RE: [W5300] recv함수의 반환값이 어떻게 되나요?
by Kei ·
참조하신 socket.c 파일은,
아래 Github의 ioLibrary를 참조하신 것인가요?
recv() 함수의 리턴값은 파라미터로 받은 len의 값입니다.
(len이 RX레지스터의 최대 크기를 넘어간다면, 최대 크기만큼으로 변경됩니다)
추가로, W5300의 경우, 아래 코드로 인해 len값이 변경될 수 있습니다.
참조하시는 드라이버가 어떤 것인지 언급해주시면,
보다 정확한 답변이 가능하겠습니다.
RE: [W5300] recv함수의 반환값이 어떻게 되나요?
by Seongwook Yoon ·
인수인계 받은거라 정확히 어떤 라이브러리를 사용했는지 알 수 없으나 아래 정보로 확인이 가능하실까요…?
socket.c 파일 상단 주석 내용과 recv함수를 첨부하겠습니다.
socket.c 파일 상단 주석은 다음과 같습니다.
또한, 사용한 recv함수는 다음과 같이 정의 되 있습니다.
RE: [W5300] recv함수의 반환값이 어떻게 되나요?
by irina WIZnet ·
안녕하세요.
언급하신 부분의 경우, 정상적인 상황입니다.
W5300 칩의 데이터 수신 시, 수신된 TCP 데이터는 다음과 같이 구성되어 있습니다.
따라서, getSn_RX_RSR(s) 함수가 리턴하는 hardware rx socket buffer에 수신된 데이터의 길이와 recv() 함수를 통해 수신된 실제 데이터의 길이는 packet-info header의 유무에 따라 차이가 있을 수 있으며 recv() 함수의 리턴 값을 수신 데이터 길이로 보시면 됩니다.
다음 W5300 제품 페이지 링크 내 Datasheet p.97의 TCP 데이터 수신 프로세스에 관한 내용을 참고 부탁 드립니다.
http://www.wiznet.io/ko/product-item/w5300/
RE: RE: [W5300] recv함수의 반환값이 어떻게 되나요?
by Seongwook Yoon ·
감사합니다.
덕분에 잘 이해됐습니다 ^^
혹시 getSn_RX_RSR(s)의 반환값과 recv(s, rx_buff, len)의 반환값이 2의 배수 바이트 만큼 차이가 나는게 아니라 3바이트가 차이나는 경우는 어떻게 이해하면 될지요~??
만약 4바이트 차이가 난다면 2개의 패킷을 수신 한 경우로 PACKT-INFO가 2Byte * 2개 패킷 해서 4바이트 차이가 날 수있을 것 같은데, 3바이트 차이가 나는 경우가 발생하고 있습니다.
이럴 경우에는 어떤 문제를 의심해봐야 할까요~??
RE: [W5300] recv함수의 반환값이 어떻게 되나요?
by irina WIZnet ·
먼저 실제 송/수신한 데이터에 오차가 있는지, 있다면 데이터의 어떤 부분에 누락이 있는지 확인 하는 것이 우선 일 것 같습니다.
그리고 드라이버 단의 처리를 점검해보면 좋을 것 같습니다.
비교 해 보시고, 송수신 데이터를 함께 답글에 보여주시면 원인 파악에 도움이 될 듯 싶네요.