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의 클라이언트 에서 파일리스트가 보이지 않는 문제가 발생합니다.
소켓은 두개만 사용중입니다.
빠른 답변 기다리겠습니다. 수고 하세요