현재 드라이버 포팅을 하고 loopback 테스트 까치 완료하였습니다.
저는 2byte의 데이터를 pc로 송신만 하고 싶습니다.
ex)
uint8_t dbuf[2] = {32, 20};
…
case SOCK_ESTABLISHED :
sentsize = 0;
while(2 != sentsize)
{
ret = send(sn,dbuf+sentsize,2-sentsize);
if(ret < 0)
{
close(sn);
return ret;
}
sentsize += ret;
}
break;
…
이렇게 소스를 작성하여 데이터를 보내면 정상적으로 보내지지 않습니다.
그럼 다시 uint8_t dbuf[2] = {‘a’, ‘b’}; 부분만 이렇게 바꾸어서 확인해보면
ab 라는 값이 정삭적으로 출력이 됩니다.
제가 올바르지않는 커뮤니케이션을 하고있습니까?
ekkim
2
안녕하세요
우선작성해주신 코드를 보기에는 Sn_IR_CON비트를 클리어해주는 부분빼고는 맞습니다.
하지만 작성해주신 코드만 가지고는 문제 해결에는 도움이 될것 같지 않습니다.
- wireshark 프로그램(무료)을 이용하여 TCP 동작하는 부분을 캡쳐한 파일
- TCP send가 쓰이는 코드파일(아마도, main.c 같은것이 겠지요?)
위의 두가지를 첨부해주시면 빠른 문제해결이 될것 같습니다.
감사합니다.
EK 
bangbh
3
안녕하세요 ^^
32는 아스키 값으로 SP 즉 Space입니다. 그리고
20은 아스키 값으로 DC4라는 제어 문자 입니다.
PC에서 화면 출력을 아스키로 설정해 놓았다면 아무것도 출력되지 않습니다.
‘a’,'b’는 각각 아스키 코드로 변환되어 실제로는 97과 98로 전송되게 됩니다.
수고하세요.