WIZnet / FTPClient Featured

Dependents:   Digital_Photo_Frame_with_FTP_SD_WIZwiki-W7500 FTP_Streaming_Music_Player_WIZwiki-W7500 GIF2015 MP3Decoding_VS1002_WIZwiki-W7500

Fork of FTPClient by Midnight Cow

Files at this revision

API Documentation at this revision

Comitter:
MidnightCow
Date:
Sat Aug 15 08:43:02 2015 +0000
Parent:
3:4fd8e5cd6307
Child:
5:fe95043a506e
Commit message:
Update FTPClient

Changed in this revision

FTPClient.cpp Show annotated file Show diff for this revision Revisions of this file
FTPClient.h Show annotated file Show diff for this revision Revisions of this file
--- a/FTPClient.cpp	Wed Jul 29 00:03:21 2015 +0000
+++ b/FTPClient.cpp	Sat Aug 15 08:43:02 2015 +0000
@@ -1,30 +1,38 @@
 #include "mbed.h"
 #include "EthernetInterface.h"
 #include "FTPClient.h"
+
 //#define DEBUG
-FTPClient::FTPClient(PinName mosi, PinName miso, PinName sclk, PinName ssel, const char* root) : _SDFileSystem(mosi, miso, sclk, ssel, root){
+
+FTPClient::FTPClient(PinName mosi, PinName miso, PinName sclk, PinName ssel, const char* root) {
+    _SDFileSystem = new SDFileSystem(mosi, miso, sclk, ssel, root);
     blogin = false;
-    bopenflag = false;
-    brfileflag = false;
-    bdirflag = false;
-    blsflag = false;
-    bfdeleteflag = false;
-    bmkdirflag = false;
-    bcdflag = false;
-    bquitflag = false;
+    strcpy(this->root,root);
 }
+
+FTPClient::FTPClient(const char* root)
+{
+    _SDFileSystem = NULL;
+    blogin = false;
+    strcpy(this->root,root);
+}
+
+FTPClient::~FTPClient()
+{
+    if(_SDFileSystem == NULL) delete _SDFileSystem;
+}
+
 bool FTPClient::open(char* ip, int port, char* id, char* pass){
     
-    FTPClientControlSock = new TCPSocketConnection;
-    FTPClientDataSock = new TCPSocketConnection;
-    
+    int size;
+    blogin = false;
     #if 0
     do{
-        FTPClientControlSock->connect(ip, port);
-    }while(!FTPClientControlSock->is_connected());
+        FTPClientControlSock.connect(ip, port);
+    }while(!FTPClientControlSock.is_connected());
     #endif
     #if 1
-    while (FTPClientControlSock->connect(ip, port) < 0) {
+    while (FTPClientControlSock.connect(ip, port) < 0) {
     #ifdef DEBUG
         printf("Unable to connect to (%s) on port (%d)\r\n", ip, port);
     #endif
@@ -33,77 +41,76 @@
     #endif
     
     while(!blogin){
-        size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
+        size = FTPClientControlSock.receive(ftpbuf, sizeof(ftpbuf));
         if(size > 0){
         #ifdef DEBUG
-            printf("Received message from server: %s\r\n", rbuf);
+            printf("Received message from server: %s\r\n", ftpbuf);
         #endif
-            if (!strncmp(rbuf, "220", 3)){
-                printf("%s\r\n", rbuf);
-                sprintf(sbuf, "user %s\r\n", id);             
-                FTPClientControlSock->send(sbuf, strlen(sbuf));
+            if (!strncmp(ftpbuf, "220", 3)){
+                printf("%s\r\n", ftpbuf);
+                sprintf(ftpbuf, "user %s\r\n", id);             
+                FTPClientControlSock.send(ftpbuf, strlen(ftpbuf));
             }
-            else if (!strncmp(rbuf, "331", 3)){
-                sprintf(sbuf, "pass %s\r\n", pass);             
-                FTPClientControlSock->send(sbuf, strlen(sbuf));
+            else if (!strncmp(ftpbuf, "331", 3)){
+                sprintf(ftpbuf, "pass %s\r\n", pass);             
+                FTPClientControlSock.send(ftpbuf, strlen(ftpbuf));
             }
-            else if (!strncmp(rbuf, "230", 3)){
+            else if (!strncmp(ftpbuf, "230", 3)){
                 blogin = true;
             }
             else{
-                blogin = true;
+                break;
             }
         }  
     }
-    return 1;
+    return blogin;
 }
 
-bool FTPClient::getfile(char* myfilename, char* filename){
-    
+bool FTPClient::getfile(char* filename){
+    FILE* fp;
+    int size;
+
     if(blogin){
-              
-        sprintf(sbuf, "pasv\r\n");             
-        FTPClientControlSock->send(sbuf, strlen(sbuf));
+        printf("%08X\r\n",ftpbuf);
+        sprintf(ftpbuf, "pasv\r\n");             
+        FTPClientControlSock.send(ftpbuf, strlen(ftpbuf));
         
-        while(!brfileflag){
-            size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
+        while(1){
+            size = FTPClientControlSock.receive(ftpbuf, sizeof(ftpbuf));
             if(size > 0){
             #ifdef DEBUG
-                printf("Received message from server: %s\r\n", rbuf);
+                printf("Received message from server: %s\r\n", ftpbuf);
             #endif
-                if (!strncmp(rbuf, "150", 3)){
-                    fp = fopen(myfilename, "w");
+                if (!strncmp(ftpbuf, "150", 3)){
+                    sprintf(ftpbuf,"%s/%s\0",root,filename);
                 #ifdef DEBUG
-                    printf("myfilename : %s\r\n", myfilename); 
+                    printf("myfilename : %s\r\n", ftpbuf); 
                 #endif
-                    while(true){
-                        memset(rbuf, 0, sizeof(rbuf)); 
-                        remain_datasize = FTPClientDataSock->receive(rbuf, sizeof(rbuf));
+                    fp = fopen(ftpbuf, "w");
+                    while(1){
+                        size = FTPClientDataSock.receive(ftpbuf, sizeof(ftpbuf));
                     #ifdef DEBUG
-                        printf("remain_datasize : %d\r\n", remain_datasize);
+                        printf("remain_datasize : %d\r\n", size);
                     #endif
-                        if(remain_datasize>0){
-                            for (i = 0; i < remain_datasize; i++) {
-                                //printf("%c", rbuf[i]);
-                                fprintf(fp, "%c", rbuf[i]);
-                            }
+                        if(size>0){
+                            fwrite(ftpbuf,size,sizeof(char),fp);
                         #ifdef DEBUG
                             printf("#");
                         #endif
                         }
-                        else{
-                            brfileflag = true;
+                        if(size < 0 || size < MAX_SS) 
+                        {
                             fclose(fp);
-                            FTPClientDataSock->close();
+                            FTPClientDataSock.close();
                             break;
                         }
                     }
                 }
-                else if (!strncmp(rbuf, "227", 3)){
-                    pportc(rbuf); 
+                else if (!strncmp(ftpbuf, "227", 3)){
+                    pportc(ftpbuf); 
                     
                 #if 1
-                    while (FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port) < 0) {
+                    while (FTPClientDataSock.connect(ftpServer_data_ip_addr_str, remote_port) < 0) {
                     #ifdef DEBUG
                         printf("Unable to connect to (%s) on port (%d)\r\n", ftpServer_data_ip_addr_str, remote_port);
                     #endif
@@ -113,309 +120,290 @@
                     
                 #if 0
                     do{
-                        FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port);
-                    }while(!FTPClientDataSock->is_connected());    
+                        FTPClientDataSock.connect(ftpServer_data_ip_addr_str, remote_port);
+                    }while(!FTPClientDataSock.is_connected());    
                 #endif
-                    sprintf(sbuf, "retr %s\r\n", filename);             
-                    FTPClientControlSock->send(sbuf, strlen(sbuf));  
+                    sprintf(ftpbuf, "retr %s\r\n", filename);             
+                    FTPClientControlSock.send(ftpbuf, strlen(ftpbuf));  
                 }
+                else if(!strncmp(ftpbuf,"226",3)) break;
             }  
         }
-        brfileflag = false;
-        return 1;
+        return true;
     }
-    else return 0;
+    return false;
 }
-bool FTPClient::putfile(char* myfilename, char* filename){
+
+bool FTPClient::putfile(char* filename){
+    FILE* fp;
+    int size;
+    long int remain_filesize;
+    long int send_byte;
     
     if(blogin){
         
-        sprintf(sbuf, "pasv\r\n");             
-        FTPClientControlSock->send(sbuf, strlen(sbuf));
+        sprintf(ftpbuf, "pasv\r\n");             
+        FTPClientControlSock.send(ftpbuf, strlen(ftpbuf));
         
-        while(!bsfileflag){
-            size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
+        while(1){
+            size = FTPClientControlSock.receive(ftpbuf, sizeof(ftpbuf));
             if(size > 0){
             #ifdef DEBUG
-                printf("Received message from server: %s\r\n", rbuf);
+                printf("Received message from server: %s\r\n", ftpbuf);
             #endif
-                if (!strncmp(rbuf, "150", 3)){
-                    fp = fopen(myfilename, "r"); 
+                if (!strncmp(ftpbuf, "150", 3)){
+                    sprintf(ftpbuf,"%s/%s",root,filename);
+                    fp = fopen(ftpbuf, "r"); 
                     fseek(fp, 0, SEEK_END);            // seek to end of file
                     remain_filesize = ftell(fp);       // get current file pointer
                     fseek(fp, 0, SEEK_SET);            // seek back to beginning of file  
                     do{
-                        memset(sbuf, 0, sizeof(sbuf));
                         if(remain_filesize > MAX_SS)
                             send_byte = MAX_SS;
                         else
                             send_byte = remain_filesize;
-                        fread (sbuf, 1, send_byte, fp);
-                        FTPClientDataSock->send(sbuf, send_byte);
+                        fread (ftpbuf, 1, send_byte, fp);
+                        FTPClientDataSock.send(ftpbuf, send_byte);
                         remain_filesize -= send_byte;
                     #ifdef DEBUG
                         printf("#");
                     #endif
                     }while(remain_filesize!=0);
                     fclose(fp); 
-                    bsfileflag = true;
-                    FTPClientDataSock->close();
+                    FTPClientDataSock.close();
                     break;
                 }
-                else if (!strncmp(rbuf, "227", 3)){
-                    pportc(rbuf); 
+                else if (!strncmp(ftpbuf, "227", 3)){
+                    pportc(ftpbuf); 
                 #if 0
                     do{
-                        FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port);
-                    }while(!FTPClientDataSock->is_connected());  
+                        FTPClientDataSock.connect(ftpServer_data_ip_addr_str, remote_port);
+                    }while(!FTPClientDataSock.is_connected());  
                 #endif
                     
                 #if 1
-                    while (FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port) < 0) {
+                    while (FTPClientDataSock.connect(ftpServer_data_ip_addr_str, remote_port) < 0) {
                     #ifdef DEBUG
                         printf("Unable to connect to (%s) on port (%d)\r\n", ftpServer_data_ip_addr_str, remote_port);
                     #endif
                         wait(1);
                     }
                 #endif  
-                    sprintf(sbuf, "stor %s\r\n", filename);             
-                    FTPClientControlSock->send(sbuf, strlen(sbuf));  
+                    sprintf(ftpbuf, "stor %s\r\n", filename);             
+                    FTPClientControlSock.send(ftpbuf, strlen(ftpbuf));  
                 }
+                else if(!strncmp(ftpbuf,"226",3)) break;
             }  
         }
-        bsfileflag = false;
-        return 1;
+        return true;
     }
-    else return 0;
+    return false;
 }
-bool FTPClient::dir(){
-    
+
+bool FTPClient::dir(char* liststr){
+    int size;
     if(blogin){
     
-        sprintf(sbuf, "pasv\r\n");             
-        FTPClientControlSock->send(sbuf, strlen(sbuf));
+        sprintf(ftpbuf, "pasv\r\n");             
+        FTPClientControlSock.send(ftpbuf, strlen(ftpbuf));
         
-        while(!bdirflag){
-            size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
+        while(1){
+            size = FTPClientControlSock.receive(ftpbuf, sizeof(ftpbuf));
             if(size > 0){
             #ifdef DEBUG
-                printf("Received message from server: %s\r\n", rbuf);
+                printf("Received message from server: %s\r\n", ftpbuf);
             #endif
-                if (!strncmp(rbuf, "150", 3)){
-                    while(true){
-                        memset(rbuf, 0, sizeof(rbuf));
-                        size = FTPClientDataSock->receive(rbuf, sizeof(rbuf));
-                        rbuf[size] = '\0';
+                if (!strncmp(ftpbuf, "150", 3)){
+                    while(1){
+                        size = FTPClientDataSock.receive(ftpbuf, sizeof(ftpbuf));
                         if(size>0){
-                            printf("%s", rbuf);
+                            ftpbuf[size] = '\0';
+                            strcpy(liststr,ftpbuf);
+                            printf("%s", ftpbuf);
                         }
                         else{
-                            bdirflag = true;
-                            FTPClientDataSock->close();
+                            FTPClientDataSock.close();
                             break;
                         }
-                    }  
+                    }
                 }
-                else if (!strncmp(rbuf, "227", 3)){
-                    pportc(rbuf); 
+                else if (!strncmp(ftpbuf, "227", 3)){
+                    pportc(ftpbuf); 
                 #if 0
                     do{
-                        FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port);
-                    }while(!FTPClientDataSock->is_connected());   
+                        FTPClientDataSock.connect(ftpServer_data_ip_addr_str, remote_port);
+                    }while(!FTPClientDataSock.is_connected());   
                 #endif
                 #if 1
-                    while (FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port) < 0) {
+                    while (FTPClientDataSock.connect(ftpServer_data_ip_addr_str, remote_port) < 0) {
                     #ifdef DEBUG
                         printf("Unable to connect to (%s) on port (%d)\r\n", ftpServer_data_ip_addr_str, remote_port);
                     #endif
                         wait(1);
                     }
                 #endif   
-                    sprintf(sbuf, "list\r\n");             
-                    FTPClientControlSock->send(sbuf, strlen(sbuf));  
+                    sprintf(ftpbuf, "list\r\n");             
+                    FTPClientControlSock.send(ftpbuf, strlen(ftpbuf));  
                 }
+                else if(!strncmp(ftpbuf, "226",3)) break;
             }  
         }
-        bdirflag = false;
-        return 1;
+        return true;
     }
-    else return 0;
+    *liststr = 0;
+    return false;
 }
 
-bool FTPClient::ls(){
+bool FTPClient::ls(char* liststr){
     
+    int size ;
     if(blogin){
     
-        sprintf(sbuf, "pasv\r\n");             
-        FTPClientControlSock->send(sbuf, strlen(sbuf));
+        sprintf(ftpbuf, "pasv\r\n");             
+        FTPClientControlSock.send(ftpbuf, strlen(ftpbuf));
         
-        while(!blsflag){
-            size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
+        while(1){
+            size = FTPClientControlSock.receive(ftpbuf, sizeof(ftpbuf));
             if(size > 0){
             #ifdef DEBUG
-                printf("Received message from server: %s\r\n", rbuf);
+                printf("Received message from server: %s\r\n", ftpbuf);
             #endif
-                if (!strncmp(rbuf, "150", 3)){
-                    while(true){
-                        memset(rbuf, 0, sizeof(rbuf));
-                        size = FTPClientDataSock->receive(rbuf, sizeof(rbuf));
-                        rbuf[size] = '\0';
+                if (!strncmp(ftpbuf, "150", 3)){
+                    while(1){
+                        size = FTPClientDataSock.receive(ftpbuf, sizeof(ftpbuf));
                         if(size>0){
-                            printf("%s", rbuf);
+                            ftpbuf[size] = '\0';
+                            strcpy(liststr,ftpbuf);
+                        #ifdef DEBUG
+                            printf("%s", ftpbuf);
+                        #endif
                         }
                         else{
-                            blsflag = true;
-                            FTPClientDataSock->close();
+                            FTPClientDataSock.close();
                             break;
                         }
                     }  
                 }
-                else if (!strncmp(rbuf, "227", 3)){
-                    pportc(rbuf); 
+                else if (!strncmp(ftpbuf, "227", 3)){
+                    pportc(ftpbuf); 
                 #if 0
                     do{
-                        FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port);
-                    }while(!FTPClientDataSock->is_connected());   
+                        FTPClientDataSock.connect(ftpServer_data_ip_addr_str, remote_port);
+                    }while(!FTPClientDataSock.is_connected());   
                 #endif
                 #if 1
-                    while (FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port) < 0) {
+                    while (FTPClientDataSock.connect(ftpServer_data_ip_addr_str, remote_port) < 0) {
                     #ifdef DEBUG
                         printf("Unable to connect to (%s) on port (%d)\r\n", ftpServer_data_ip_addr_str, remote_port);
                     #endif
                         wait(1);
                     }
                 #endif   
-                    sprintf(sbuf, "nlst\r\n");             
-                    FTPClientControlSock->send(sbuf, strlen(sbuf));  
+                    sprintf(ftpbuf, "nlst\r\n");             
+                    FTPClientControlSock.send(ftpbuf, strlen(ftpbuf));  
                 }
+                else if(!strncmp(ftpbuf,"226",3)) break;
             }  
         }
-        blsflag = false;
-        return 1;
+        return true;
     }
-    else return 0;
+    *liststr = 0;
+    return false;
 }
 
 bool FTPClient::fdelete(char* filename){
-    
+    int size;
     if(blogin){
     
-        sprintf(sbuf, "dele %s\r\n", filename);             
-        FTPClientControlSock->send(sbuf, strlen(sbuf));
+        sprintf(ftpbuf, "dele %s\r\n", filename);             
+        FTPClientControlSock.send(ftpbuf, strlen(ftpbuf));
         
-        while(!bfdeleteflag){
-            size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
-            if(size > 0){
-            #ifdef DEBUG
-                printf("Received message from server: %s\r\n", rbuf);
-            #endif
-                if (!strncmp(rbuf, "250", 3)){
-                    bfdeleteflag = true;
-                }
-                else {
-                    return 0;
-                }
-            }  
+        size = FTPClientControlSock.receive(ftpbuf, sizeof(ftpbuf));
+        if(size > 0){
+        #ifdef DEBUG
+            printf("Received message from server: %s\r\n", ftpbuf);
+        #endif
+            if (!strncmp(ftpbuf, "250", 3))  return true;
         }
-        bfdeleteflag = false;
-        return 1;
     }
-    else return 0;
+    return false;
 }
+
 bool FTPClient::mkdir(char* dirname){
     
+    int size;
+    if(blogin){
+    
+        sprintf(ftpbuf, "xmkd %s\r\n", dirname);             
+        FTPClientControlSock.send(ftpbuf, strlen(ftpbuf));
+        
+        size = FTPClientControlSock.receive(ftpbuf, sizeof(ftpbuf));
+        if(size > 0){
+        #ifdef DEBUG
+            printf("Received message from server: %s\r\n", ftpbuf);
+        #endif
+            if (!strncmp(ftpbuf, "257", 3)) return true;
+        }
+    }
+    return false;
+}
+
+bool FTPClient::cd(char* dirname){
+    int size;
+    
     if(blogin){
     
-        sprintf(sbuf, "xmkd %s\r\n", dirname);             
-        FTPClientControlSock->send(sbuf, strlen(sbuf));
+        sprintf(ftpbuf, "cwd %s\r\n", dirname);             
+        FTPClientControlSock.send(ftpbuf, strlen(ftpbuf));
         
-        while(!bmkdirflag){
-            size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
-            if(size > 0){
-            #ifdef DEBUG
-                printf("Received message from server: %s\r\n", rbuf);
-            #endif
-                if (!strncmp(rbuf, "257", 3)){
-                    bmkdirflag = true;
-                }
-                else {
-                    return 0;
-                }
-            }  
+        size = FTPClientControlSock.receive(ftpbuf, sizeof(ftpbuf));
+        if(size > 0){
+        #ifdef DEBUG
+            printf("Received message from server: %s\r\n", ftpbuf);
+        #endif
+            if (!strncmp(ftpbuf, "250", 3)) return true;
         }
-        bmkdirflag = false;
-        return 1;
     }
-    else return 0;
+    return false;
 }
-bool FTPClient::cd(char* dirname){
-    
+
+bool FTPClient::quit(){
+    int size;
     if(blogin){
     
-        sprintf(sbuf, "cwd %s\r\n", dirname);             
-        FTPClientControlSock->send(sbuf, strlen(sbuf));
+        sprintf(ftpbuf, "quit \r\n");             
+        FTPClientControlSock.send(ftpbuf, strlen(ftpbuf));
         
-        while(!bcdflag){
-            size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
-            if(size > 0){
-            #ifdef DEBUG
-                printf("Received message from server: %s\r\n", rbuf);
-            #endif
-                if (!strncmp(rbuf, "250", 3)){
-                    bcdflag = true;
-                }
-                else {
-                    return 0;
-                }
-            }  
-        }
-        bcdflag = false;
-        return 1;
+        size = FTPClientControlSock.receive(ftpbuf, sizeof(ftpbuf));
+        if(size > 0){
+        #ifdef DEBUG
+            printf("Received message from server: %s\r\n", ftpbuf);
+        #endif
+            if (!strncmp(ftpbuf, "250", 3)){
+                printf("%s\r\n", ftpbuf);
+                FTPClientControlSock.close();
+                blogin = false;
+                return true;
+            }
+        }  
     }
-    else return 0;
+    blogin = false;
+    return false;
 }
-bool FTPClient::quit(){
-    
-    if(blogin){
-    
-        sprintf(sbuf, "quit \r\n");             
-        FTPClientControlSock->send(sbuf, strlen(sbuf));
-        
-        while(!bquitflag){
-            size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
-            if(size > 0){
-            #ifdef DEBUG
-                printf("Received message from server: %s\r\n", rbuf);
-            #endif
-                if (!strncmp(rbuf, "250", 3)){
-                    printf("%s\r\n", rbuf);
-                    bquitflag = true;
-                }
-                else {
-                    return 0;
-                }
-            }  
-        }
-        
-        bquitflag = false;
-        blogin = false;
-        delete FTPClientControlSock;
-        delete FTPClientDataSock;
-        
-        return 1;
-    }
-    else return 0;
-}
+
 int FTPClient::pportc(char * arg)
 {
+    uint8_t ip[4];
     char* tok=0;
-    
-    strtok(arg,"(");
+    char* lasts = 0;
+    int i;
+   
+    tok = strchr(arg, '(') + 1  ;
     for (i = 0; i < 4; i++)
     {
-        if(i==0) tok = strtok(NULL,",\r\n");
-        else     tok = strtok(NULL,",");
-        ftpServer_data_ip_addr[i] = (uint8_t)atoi(tok);
+        tok = strtok_r(tok,",", &lasts);
+        ip[i] = (uint8_t)atoi(tok);
+        tok = lasts;
         if (!tok){
         #ifndef DEBUG
             printf("bad pport : %s\r\n", arg);
@@ -425,9 +413,10 @@
     }
     remote_port = 0;
     for (i = 0; i < 2; i++){
-        tok = strtok(NULL,",\r\n");
+        tok = strtok_r(tok,",)",&lasts);
         remote_port <<= 8;
         remote_port += atoi(tok);
+        tok = lasts;
         if (!tok){
         #ifdef DEBUG
             printf("bad pport : %s\r\n", arg);
@@ -435,8 +424,8 @@
             return -1;
         }
     }
-    sprintf(ftpServer_data_ip_addr_str, "%d.%d.%d.%d", ftpServer_data_ip_addr[0], ftpServer_data_ip_addr[1], ftpServer_data_ip_addr[2], ftpServer_data_ip_addr[3]);
-    return 0;
+    sprintf(ftpServer_data_ip_addr_str, "%d.%d.%d.%d", ip[0],ip[1],ip[2],ip[3]);
+    return 0; 
 }
 
 
--- a/FTPClient.h	Wed Jul 29 00:03:21 2015 +0000
+++ b/FTPClient.h	Sat Aug 15 08:43:02 2015 +0000
@@ -2,7 +2,7 @@
 #define FTP_CLIENT_H
 #include "mbed.h"
 #include "SDFileSystem.h"
-#define MAX_SS              256
+#define MAX_SS              512
 /** FTPClient class.
  *  Used file transfer with FTPServer like ALFTP(http://software.altools.co.kr/ko-kr/closed.html)
  *  This test was completed in ALFTP
@@ -11,7 +11,8 @@
 public:
     /** Create FTPClient instance */
     FTPClient(PinName mosi, PinName miso, PinName sclk, PinName ssel, const char* root);
-    ~FTPClient() {};
+    FTPClient(const char* root);
+    ~FTPClient();
     
     /** Connect to FTPServer
      *
@@ -24,21 +25,21 @@
     
     /** Get file from FTPServer
      *
-     * @param My file name, FTPServer file name 
+     * @param filename 
      * @returns
      *   1 on success,
      *   0 on getfile error
      */
-    bool getfile(char* myfilename, char* filename);
+    bool getfile(char* filename);
     
     /** Put file to FTPServer
      *
-     * @param My file name, FTPServer file name 
+     * @param FTPServer file name 
      * @returns
      *   1 on success,
      *   0 on putfile error
      */
-    bool putfile(char* myfilename, char* filename);
+    bool putfile(char* filename);
     
     /** View FTPServer directory
      *
@@ -47,7 +48,7 @@
      *   1 on success,
      *   0 on dir error
      */
-    bool dir();
+    bool dir(char* liststr);
     
     /** View FTPServer directory
      *
@@ -56,7 +57,7 @@
      *   1 on success,
      *   0 on ls error
      */
-    bool ls();
+    bool ls(char* liststr);
     
     /** Delete FTPServer file
      *
@@ -95,35 +96,21 @@
     bool quit();
       
 private:
-    TCPSocketConnection* FTPClientControlSock;
-    TCPSocketConnection* FTPClientDataSock;
+    TCPSocketConnection FTPClientControlSock;
+    TCPSocketConnection FTPClientDataSock;
     
     bool blogin;
-    bool bopenflag;
-    bool brfileflag;
-    bool bsfileflag;
-    bool bdirflag;
-    bool blsflag;
-    bool bfdeleteflag;
-    bool bmkdirflag;
-    bool bcdflag;
-    bool bquitflag;
     
-    char ftpServer_data_ip_addr[4];
     char ftpServer_data_ip_addr_str[20];
     int remote_port;
     
-    char rbuf[256];
-    char sbuf[256];
+    char ftpbuf[MAX_SS];
+    
 
-    int remain_datasize;
-    int i;
-    int remain_filesize;
-    int send_byte;
-    int size;
-    FILE *fp;
-    SDFileSystem _SDFileSystem;
+    SDFileSystem* _SDFileSystem;
     
     int pportc(char * arg);
+    
+    char root[20];
 };
 #endif
\ No newline at end of file