w5100 전송속도 관련문의합니다.


#1

W5100E01-AVR 보드를 이용하여 ftp서버 프로그램을 작성하고 있습니다.
ftp관련코드는 EVB-AVR(W3100)의 예제를 참고로 하고 있습니다.
pc와 통신과 데이터 전송동작은 다 이루어진 상태인데, 문제는 pc에서 보드로 데이터를 보내면 전송하는 속도가 너무느리다는 것입니다. 약1MB정도의 파일을 보내는 데 약 1분정도 소요되고 있습니다.(passive모드로 작동중)
ax1프로그램을 이용하여 테스트를 해보면 약 1~2초내로 테스트 프로그램(1MB)의 송수신이 완료되는것 같은데 어떤 문제가 있을까요. 수신부분의 코드는 다음과 같습니다.

long recvfile(SOCKET s)
{
int len;
unsigned char rx_buf[MAX_BUF_SIZE];

while (1)
{
    if (getSn_SR(ftp.data)==SOCK_ESTABLISHED)
    {
if((len = getSn_RX_RSR(ftp.data)) > 0) 			
{
    if (len > MAX_BUF_SIZE) len = MAX_BUF_SIZE;
    recv(ftp.data, rx_buf, len);
}
    }
    else
    {
        disconnect(ftp.control);
        break;
    }		
}
return 1;

}

한가지 더 문의드리자면 소켓번호에 관계된 것인데요
#define CTRL_SOCK 0
#define DATA_SOCK 2
이렇게 설정하고 실행하면 정상적으로 작동되는데
#define CTRL_SOCK 0
#define DATA_SOCK 1
이런식으로 소켓번호가 바뀌면 pc의 클라이언트 에서 파일리스트가 보이지 않는 문제가 발생합니다.
소켓은 두개만 사용중입니다.

빠른 답변 기다리겠습니다. 수고 하세요


#2

안녕하세요.

올려주신 코드상으로는 전송속도가 저하되는 것으로 보이진 않습니다.

Wireshark등의 패킷캡쳐 프로그램을 사용하여 PC와 W5100간에 주고 받는 패킷을 캡쳐하여 올려주시면 이를 통해 분석해 보도록 하겠습니다.

또한 두번째 질문에서 소켓번호를 바꿨다고 오작동을 일으키지는 않습니다.
아마도 코드상에서 문제가 발생했거나 어플리케이션의 문제일 것 같습니다.

작성하신 코드를 올려주시면 검토해 보도록 하겠습니다.

감사합니다.