FTPClient

Dependents:   FTPClient_example FTP_TESTClient

Committer:
Ricky_Kwon
Date:
Tue Jul 28 23:33:09 2015 +0000
Revision:
2:dbbe55b239d5
Parent:
1:2630b5456598
Child:
3:4fd8e5cd6307
optimization

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ricky_Kwon 0:61da21bfd120 1 #include "mbed.h"
Ricky_Kwon 0:61da21bfd120 2 #include "EthernetInterface.h"
Ricky_Kwon 0:61da21bfd120 3 #include "FTPClient.h"
Ricky_Kwon 0:61da21bfd120 4 //#define DEBUG
Ricky_Kwon 0:61da21bfd120 5 FTPClient::FTPClient(PinName mosi, PinName miso, PinName sclk, PinName ssel, const char* root) : _SDFileSystem(mosi, miso, sclk, ssel, root){
Ricky_Kwon 0:61da21bfd120 6 blogin = false;
Ricky_Kwon 0:61da21bfd120 7 bopenflag = false;
Ricky_Kwon 0:61da21bfd120 8 brfileflag = false;
Ricky_Kwon 0:61da21bfd120 9 bdirflag = false;
Ricky_Kwon 0:61da21bfd120 10 blsflag = false;
Ricky_Kwon 0:61da21bfd120 11 bfdeleteflag = false;
Ricky_Kwon 0:61da21bfd120 12 bmkdirflag = false;
Ricky_Kwon 0:61da21bfd120 13 bcdflag = false;
Ricky_Kwon 2:dbbe55b239d5 14 bquitflag = false;
Ricky_Kwon 0:61da21bfd120 15 }
Ricky_Kwon 0:61da21bfd120 16 bool FTPClient::open(char* ip, int port, char* id, char* pass){
Ricky_Kwon 0:61da21bfd120 17
Ricky_Kwon 0:61da21bfd120 18 FTPClientControlSock = new TCPSocketConnection;
Ricky_Kwon 0:61da21bfd120 19 FTPClientDataSock = new TCPSocketConnection;
Ricky_Kwon 0:61da21bfd120 20
Ricky_Kwon 0:61da21bfd120 21 #if 0
Ricky_Kwon 0:61da21bfd120 22 do{
Ricky_Kwon 0:61da21bfd120 23 FTPClientControlSock->connect(ip, port);
Ricky_Kwon 0:61da21bfd120 24 }while(!FTPClientControlSock->is_connected());
Ricky_Kwon 0:61da21bfd120 25 #endif
Ricky_Kwon 0:61da21bfd120 26 #if 1
Ricky_Kwon 0:61da21bfd120 27 while (FTPClientControlSock->connect(ip, port) < 0) {
Ricky_Kwon 0:61da21bfd120 28 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 29 printf("Unable to connect to (%s) on port (%d)\r\n", ip, port);
Ricky_Kwon 0:61da21bfd120 30 #endif
Ricky_Kwon 0:61da21bfd120 31 wait(1);
Ricky_Kwon 0:61da21bfd120 32 }
Ricky_Kwon 0:61da21bfd120 33 #endif
Ricky_Kwon 0:61da21bfd120 34
Ricky_Kwon 0:61da21bfd120 35 while(!blogin){
Ricky_Kwon 0:61da21bfd120 36 size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 37 if(size > 0){
Ricky_Kwon 0:61da21bfd120 38 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 39 printf("Received message from server: %s\r\n", rbuf);
Ricky_Kwon 0:61da21bfd120 40 #endif
Ricky_Kwon 0:61da21bfd120 41 if (!strncmp(rbuf, "220", 3)){
Ricky_Kwon 1:2630b5456598 42 printf("%s\r\n", rbuf);
Ricky_Kwon 0:61da21bfd120 43 sprintf(sbuf, "user %s\r\n", id);
Ricky_Kwon 0:61da21bfd120 44 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 45 }
Ricky_Kwon 0:61da21bfd120 46 else if (!strncmp(rbuf, "331", 3)){
Ricky_Kwon 0:61da21bfd120 47 sprintf(sbuf, "pass %s\r\n", pass);
Ricky_Kwon 0:61da21bfd120 48 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 49 }
Ricky_Kwon 0:61da21bfd120 50 else if (!strncmp(rbuf, "230", 3)){
Ricky_Kwon 0:61da21bfd120 51 blogin = true;
Ricky_Kwon 0:61da21bfd120 52 }
Ricky_Kwon 0:61da21bfd120 53 else{
Ricky_Kwon 0:61da21bfd120 54 blogin = true;
Ricky_Kwon 0:61da21bfd120 55 }
Ricky_Kwon 0:61da21bfd120 56 }
Ricky_Kwon 0:61da21bfd120 57 }
Ricky_Kwon 0:61da21bfd120 58 return 1;
Ricky_Kwon 0:61da21bfd120 59 }
Ricky_Kwon 0:61da21bfd120 60
Ricky_Kwon 0:61da21bfd120 61 bool FTPClient::getfile(char* myfilename, char* filename){
Ricky_Kwon 0:61da21bfd120 62
Ricky_Kwon 0:61da21bfd120 63 if(blogin){
Ricky_Kwon 0:61da21bfd120 64
Ricky_Kwon 0:61da21bfd120 65 sprintf(sbuf, "pasv\r\n");
Ricky_Kwon 0:61da21bfd120 66 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 67
Ricky_Kwon 0:61da21bfd120 68 while(!brfileflag){
Ricky_Kwon 0:61da21bfd120 69 size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 70 if(size > 0){
Ricky_Kwon 0:61da21bfd120 71 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 72 printf("Received message from server: %s\r\n", rbuf);
Ricky_Kwon 0:61da21bfd120 73 #endif
Ricky_Kwon 0:61da21bfd120 74 if (!strncmp(rbuf, "150", 3)){
Ricky_Kwon 0:61da21bfd120 75 fp = fopen(myfilename, "w");
Ricky_Kwon 0:61da21bfd120 76 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 77 printf("myfilename : %s\r\n", myfilename);
Ricky_Kwon 0:61da21bfd120 78 #endif
Ricky_Kwon 0:61da21bfd120 79 while(true){
Ricky_Kwon 0:61da21bfd120 80 memset(rbuf, 0, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 81 remain_datasize = FTPClientDataSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 82 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 83 printf("remain_datasize : %d\r\n", remain_datasize);
Ricky_Kwon 0:61da21bfd120 84 #endif
Ricky_Kwon 0:61da21bfd120 85 if(remain_datasize>0){
Ricky_Kwon 0:61da21bfd120 86 for (i = 0; i < remain_datasize; i++) {
Ricky_Kwon 0:61da21bfd120 87 //printf("%c", rbuf[i]);
Ricky_Kwon 0:61da21bfd120 88 fprintf(fp, "%c", rbuf[i]);
Ricky_Kwon 0:61da21bfd120 89 }
Ricky_Kwon 0:61da21bfd120 90 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 91 printf("#");
Ricky_Kwon 0:61da21bfd120 92 #endif
Ricky_Kwon 0:61da21bfd120 93 }
Ricky_Kwon 0:61da21bfd120 94 else{
Ricky_Kwon 0:61da21bfd120 95 brfileflag = true;
Ricky_Kwon 0:61da21bfd120 96 fclose(fp);
Ricky_Kwon 0:61da21bfd120 97 FTPClientDataSock->close();
Ricky_Kwon 0:61da21bfd120 98 break;
Ricky_Kwon 0:61da21bfd120 99 }
Ricky_Kwon 0:61da21bfd120 100 }
Ricky_Kwon 0:61da21bfd120 101 }
Ricky_Kwon 0:61da21bfd120 102 else if (!strncmp(rbuf, "227", 3)){
Ricky_Kwon 0:61da21bfd120 103 pportc(rbuf);
Ricky_Kwon 0:61da21bfd120 104
Ricky_Kwon 0:61da21bfd120 105 #if 1
Ricky_Kwon 0:61da21bfd120 106 while (FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port) < 0) {
Ricky_Kwon 0:61da21bfd120 107 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 108 printf("Unable to connect to (%s) on port (%d)\r\n", ftpServer_data_ip_addr_str, remote_port);
Ricky_Kwon 0:61da21bfd120 109 #endif
Ricky_Kwon 0:61da21bfd120 110 wait(1);
Ricky_Kwon 0:61da21bfd120 111 }
Ricky_Kwon 0:61da21bfd120 112 #endif
Ricky_Kwon 0:61da21bfd120 113
Ricky_Kwon 0:61da21bfd120 114 #if 0
Ricky_Kwon 0:61da21bfd120 115 do{
Ricky_Kwon 0:61da21bfd120 116 FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port);
Ricky_Kwon 0:61da21bfd120 117 }while(!FTPClientDataSock->is_connected());
Ricky_Kwon 0:61da21bfd120 118 #endif
Ricky_Kwon 0:61da21bfd120 119 sprintf(sbuf, "retr %s\r\n", filename);
Ricky_Kwon 0:61da21bfd120 120 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 121 }
Ricky_Kwon 0:61da21bfd120 122 }
Ricky_Kwon 0:61da21bfd120 123 }
Ricky_Kwon 0:61da21bfd120 124 brfileflag = false;
Ricky_Kwon 0:61da21bfd120 125 return 1;
Ricky_Kwon 0:61da21bfd120 126 }
Ricky_Kwon 0:61da21bfd120 127 else return 0;
Ricky_Kwon 0:61da21bfd120 128 }
Ricky_Kwon 0:61da21bfd120 129 bool FTPClient::putfile(char* myfilename, char* filename){
Ricky_Kwon 0:61da21bfd120 130
Ricky_Kwon 0:61da21bfd120 131 if(blogin){
Ricky_Kwon 0:61da21bfd120 132
Ricky_Kwon 0:61da21bfd120 133 sprintf(sbuf, "pasv\r\n");
Ricky_Kwon 0:61da21bfd120 134 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 135
Ricky_Kwon 0:61da21bfd120 136 while(!bsfileflag){
Ricky_Kwon 0:61da21bfd120 137 size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 138 if(size > 0){
Ricky_Kwon 0:61da21bfd120 139 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 140 printf("Received message from server: %s\r\n", rbuf);
Ricky_Kwon 0:61da21bfd120 141 #endif
Ricky_Kwon 0:61da21bfd120 142 if (!strncmp(rbuf, "150", 3)){
Ricky_Kwon 0:61da21bfd120 143 fp = fopen(myfilename, "r");
Ricky_Kwon 0:61da21bfd120 144 fseek(fp, 0, SEEK_END); // seek to end of file
Ricky_Kwon 0:61da21bfd120 145 remain_filesize = ftell(fp); // get current file pointer
Ricky_Kwon 0:61da21bfd120 146 fseek(fp, 0, SEEK_SET); // seek back to beginning of file
Ricky_Kwon 0:61da21bfd120 147 do{
Ricky_Kwon 0:61da21bfd120 148 memset(sbuf, 0, sizeof(sbuf));
Ricky_Kwon 0:61da21bfd120 149 if(remain_filesize > MAX_SS)
Ricky_Kwon 0:61da21bfd120 150 send_byte = MAX_SS;
Ricky_Kwon 0:61da21bfd120 151 else
Ricky_Kwon 0:61da21bfd120 152 send_byte = remain_filesize;
Ricky_Kwon 0:61da21bfd120 153 fread (sbuf, 1, send_byte, fp);
Ricky_Kwon 0:61da21bfd120 154 FTPClientDataSock->send(sbuf, send_byte);
Ricky_Kwon 0:61da21bfd120 155 remain_filesize -= send_byte;
Ricky_Kwon 0:61da21bfd120 156 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 157 printf("#");
Ricky_Kwon 0:61da21bfd120 158 #endif
Ricky_Kwon 0:61da21bfd120 159 }while(remain_filesize!=0);
Ricky_Kwon 0:61da21bfd120 160 fclose(fp);
Ricky_Kwon 0:61da21bfd120 161 bsfileflag = true;
Ricky_Kwon 0:61da21bfd120 162 FTPClientDataSock->close();
Ricky_Kwon 0:61da21bfd120 163 break;
Ricky_Kwon 0:61da21bfd120 164 }
Ricky_Kwon 0:61da21bfd120 165 else if (!strncmp(rbuf, "227", 3)){
Ricky_Kwon 0:61da21bfd120 166 pportc(rbuf);
Ricky_Kwon 0:61da21bfd120 167 #if 0
Ricky_Kwon 0:61da21bfd120 168 do{
Ricky_Kwon 0:61da21bfd120 169 FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port);
Ricky_Kwon 0:61da21bfd120 170 }while(!FTPClientDataSock->is_connected());
Ricky_Kwon 0:61da21bfd120 171 #endif
Ricky_Kwon 0:61da21bfd120 172
Ricky_Kwon 0:61da21bfd120 173 #if 1
Ricky_Kwon 0:61da21bfd120 174 while (FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port) < 0) {
Ricky_Kwon 0:61da21bfd120 175 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 176 printf("Unable to connect to (%s) on port (%d)\r\n", ftpServer_data_ip_addr_str, remote_port);
Ricky_Kwon 0:61da21bfd120 177 #endif
Ricky_Kwon 0:61da21bfd120 178 wait(1);
Ricky_Kwon 0:61da21bfd120 179 }
Ricky_Kwon 0:61da21bfd120 180 #endif
Ricky_Kwon 0:61da21bfd120 181 sprintf(sbuf, "stor %s\r\n", filename);
Ricky_Kwon 0:61da21bfd120 182 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 183 }
Ricky_Kwon 0:61da21bfd120 184 }
Ricky_Kwon 0:61da21bfd120 185 }
Ricky_Kwon 0:61da21bfd120 186 bsfileflag = false;
Ricky_Kwon 0:61da21bfd120 187 return 1;
Ricky_Kwon 0:61da21bfd120 188 }
Ricky_Kwon 0:61da21bfd120 189 else return 0;
Ricky_Kwon 0:61da21bfd120 190 }
Ricky_Kwon 0:61da21bfd120 191 bool FTPClient::dir(){
Ricky_Kwon 0:61da21bfd120 192
Ricky_Kwon 0:61da21bfd120 193 if(blogin){
Ricky_Kwon 0:61da21bfd120 194
Ricky_Kwon 0:61da21bfd120 195 sprintf(sbuf, "pasv\r\n");
Ricky_Kwon 0:61da21bfd120 196 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 197
Ricky_Kwon 0:61da21bfd120 198 while(!bdirflag){
Ricky_Kwon 0:61da21bfd120 199 size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 200 if(size > 0){
Ricky_Kwon 0:61da21bfd120 201 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 202 printf("Received message from server: %s\r\n", rbuf);
Ricky_Kwon 0:61da21bfd120 203 #endif
Ricky_Kwon 0:61da21bfd120 204 if (!strncmp(rbuf, "150", 3)){
Ricky_Kwon 0:61da21bfd120 205 while(true){
Ricky_Kwon 0:61da21bfd120 206 memset(rbuf, 0, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 207 size = FTPClientDataSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 208 rbuf[size] = '\0';
Ricky_Kwon 0:61da21bfd120 209 if(size>0){
Ricky_Kwon 0:61da21bfd120 210 printf("%s", rbuf);
Ricky_Kwon 0:61da21bfd120 211 }
Ricky_Kwon 0:61da21bfd120 212 else{
Ricky_Kwon 0:61da21bfd120 213 bdirflag = true;
Ricky_Kwon 0:61da21bfd120 214 FTPClientDataSock->close();
Ricky_Kwon 0:61da21bfd120 215 break;
Ricky_Kwon 0:61da21bfd120 216 }
Ricky_Kwon 0:61da21bfd120 217 }
Ricky_Kwon 0:61da21bfd120 218 }
Ricky_Kwon 0:61da21bfd120 219 else if (!strncmp(rbuf, "227", 3)){
Ricky_Kwon 0:61da21bfd120 220 pportc(rbuf);
Ricky_Kwon 0:61da21bfd120 221 #if 0
Ricky_Kwon 0:61da21bfd120 222 do{
Ricky_Kwon 0:61da21bfd120 223 FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port);
Ricky_Kwon 0:61da21bfd120 224 }while(!FTPClientDataSock->is_connected());
Ricky_Kwon 0:61da21bfd120 225 #endif
Ricky_Kwon 0:61da21bfd120 226 #if 1
Ricky_Kwon 0:61da21bfd120 227 while (FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port) < 0) {
Ricky_Kwon 0:61da21bfd120 228 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 229 printf("Unable to connect to (%s) on port (%d)\r\n", ftpServer_data_ip_addr_str, remote_port);
Ricky_Kwon 0:61da21bfd120 230 #endif
Ricky_Kwon 0:61da21bfd120 231 wait(1);
Ricky_Kwon 0:61da21bfd120 232 }
Ricky_Kwon 0:61da21bfd120 233 #endif
Ricky_Kwon 0:61da21bfd120 234 sprintf(sbuf, "list\r\n");
Ricky_Kwon 0:61da21bfd120 235 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 236 }
Ricky_Kwon 0:61da21bfd120 237 }
Ricky_Kwon 0:61da21bfd120 238 }
Ricky_Kwon 0:61da21bfd120 239 bdirflag = false;
Ricky_Kwon 0:61da21bfd120 240 return 1;
Ricky_Kwon 0:61da21bfd120 241 }
Ricky_Kwon 0:61da21bfd120 242 else return 0;
Ricky_Kwon 0:61da21bfd120 243 }
Ricky_Kwon 0:61da21bfd120 244
Ricky_Kwon 0:61da21bfd120 245 bool FTPClient::ls(){
Ricky_Kwon 0:61da21bfd120 246
Ricky_Kwon 0:61da21bfd120 247 if(blogin){
Ricky_Kwon 0:61da21bfd120 248
Ricky_Kwon 0:61da21bfd120 249 sprintf(sbuf, "pasv\r\n");
Ricky_Kwon 0:61da21bfd120 250 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 251
Ricky_Kwon 0:61da21bfd120 252 while(!blsflag){
Ricky_Kwon 0:61da21bfd120 253 size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 254 if(size > 0){
Ricky_Kwon 0:61da21bfd120 255 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 256 printf("Received message from server: %s\r\n", rbuf);
Ricky_Kwon 0:61da21bfd120 257 #endif
Ricky_Kwon 0:61da21bfd120 258 if (!strncmp(rbuf, "150", 3)){
Ricky_Kwon 0:61da21bfd120 259 while(true){
Ricky_Kwon 0:61da21bfd120 260 memset(rbuf, 0, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 261 size = FTPClientDataSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 262 rbuf[size] = '\0';
Ricky_Kwon 0:61da21bfd120 263 if(size>0){
Ricky_Kwon 0:61da21bfd120 264 printf("%s", rbuf);
Ricky_Kwon 0:61da21bfd120 265 }
Ricky_Kwon 0:61da21bfd120 266 else{
Ricky_Kwon 0:61da21bfd120 267 blsflag = true;
Ricky_Kwon 0:61da21bfd120 268 FTPClientDataSock->close();
Ricky_Kwon 0:61da21bfd120 269 break;
Ricky_Kwon 0:61da21bfd120 270 }
Ricky_Kwon 0:61da21bfd120 271 }
Ricky_Kwon 0:61da21bfd120 272 }
Ricky_Kwon 0:61da21bfd120 273 else if (!strncmp(rbuf, "227", 3)){
Ricky_Kwon 0:61da21bfd120 274 pportc(rbuf);
Ricky_Kwon 0:61da21bfd120 275 #if 0
Ricky_Kwon 0:61da21bfd120 276 do{
Ricky_Kwon 0:61da21bfd120 277 FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port);
Ricky_Kwon 0:61da21bfd120 278 }while(!FTPClientDataSock->is_connected());
Ricky_Kwon 0:61da21bfd120 279 #endif
Ricky_Kwon 0:61da21bfd120 280 #if 1
Ricky_Kwon 0:61da21bfd120 281 while (FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port) < 0) {
Ricky_Kwon 0:61da21bfd120 282 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 283 printf("Unable to connect to (%s) on port (%d)\r\n", ftpServer_data_ip_addr_str, remote_port);
Ricky_Kwon 0:61da21bfd120 284 #endif
Ricky_Kwon 0:61da21bfd120 285 wait(1);
Ricky_Kwon 0:61da21bfd120 286 }
Ricky_Kwon 0:61da21bfd120 287 #endif
Ricky_Kwon 0:61da21bfd120 288 sprintf(sbuf, "nlst\r\n");
Ricky_Kwon 0:61da21bfd120 289 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 290 }
Ricky_Kwon 0:61da21bfd120 291 }
Ricky_Kwon 0:61da21bfd120 292 }
Ricky_Kwon 0:61da21bfd120 293 blsflag = false;
Ricky_Kwon 0:61da21bfd120 294 return 1;
Ricky_Kwon 0:61da21bfd120 295 }
Ricky_Kwon 0:61da21bfd120 296 else return 0;
Ricky_Kwon 0:61da21bfd120 297 }
Ricky_Kwon 0:61da21bfd120 298
Ricky_Kwon 0:61da21bfd120 299 bool FTPClient::fdelete(char* filename){
Ricky_Kwon 0:61da21bfd120 300
Ricky_Kwon 0:61da21bfd120 301 if(blogin){
Ricky_Kwon 0:61da21bfd120 302
Ricky_Kwon 0:61da21bfd120 303 sprintf(sbuf, "dele %s\r\n", filename);
Ricky_Kwon 0:61da21bfd120 304 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 305
Ricky_Kwon 0:61da21bfd120 306 while(!bfdeleteflag){
Ricky_Kwon 0:61da21bfd120 307 size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 308 if(size > 0){
Ricky_Kwon 0:61da21bfd120 309 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 310 printf("Received message from server: %s\r\n", rbuf);
Ricky_Kwon 0:61da21bfd120 311 #endif
Ricky_Kwon 0:61da21bfd120 312 if (!strncmp(rbuf, "250", 3)){
Ricky_Kwon 0:61da21bfd120 313 bfdeleteflag = true;
Ricky_Kwon 0:61da21bfd120 314 }
Ricky_Kwon 0:61da21bfd120 315 else {
Ricky_Kwon 0:61da21bfd120 316 return 0;
Ricky_Kwon 0:61da21bfd120 317 }
Ricky_Kwon 0:61da21bfd120 318 }
Ricky_Kwon 0:61da21bfd120 319 }
Ricky_Kwon 0:61da21bfd120 320 bfdeleteflag = false;
Ricky_Kwon 0:61da21bfd120 321 return 1;
Ricky_Kwon 0:61da21bfd120 322 }
Ricky_Kwon 0:61da21bfd120 323 else return 0;
Ricky_Kwon 0:61da21bfd120 324 }
Ricky_Kwon 0:61da21bfd120 325 bool FTPClient::mkdir(char* dirname){
Ricky_Kwon 0:61da21bfd120 326
Ricky_Kwon 0:61da21bfd120 327 if(blogin){
Ricky_Kwon 0:61da21bfd120 328
Ricky_Kwon 0:61da21bfd120 329 sprintf(sbuf, "xmkd %s\r\n", dirname);
Ricky_Kwon 0:61da21bfd120 330 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 331
Ricky_Kwon 0:61da21bfd120 332 while(!bmkdirflag){
Ricky_Kwon 0:61da21bfd120 333 size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 334 if(size > 0){
Ricky_Kwon 0:61da21bfd120 335 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 336 printf("Received message from server: %s\r\n", rbuf);
Ricky_Kwon 0:61da21bfd120 337 #endif
Ricky_Kwon 0:61da21bfd120 338 if (!strncmp(rbuf, "257", 3)){
Ricky_Kwon 0:61da21bfd120 339 bmkdirflag = true;
Ricky_Kwon 0:61da21bfd120 340 }
Ricky_Kwon 0:61da21bfd120 341 else {
Ricky_Kwon 0:61da21bfd120 342 return 0;
Ricky_Kwon 0:61da21bfd120 343 }
Ricky_Kwon 0:61da21bfd120 344 }
Ricky_Kwon 0:61da21bfd120 345 }
Ricky_Kwon 0:61da21bfd120 346 bmkdirflag = false;
Ricky_Kwon 0:61da21bfd120 347 return 1;
Ricky_Kwon 0:61da21bfd120 348 }
Ricky_Kwon 0:61da21bfd120 349 else return 0;
Ricky_Kwon 0:61da21bfd120 350 }
Ricky_Kwon 0:61da21bfd120 351 bool FTPClient::cd(char* dirname){
Ricky_Kwon 0:61da21bfd120 352
Ricky_Kwon 0:61da21bfd120 353 if(blogin){
Ricky_Kwon 0:61da21bfd120 354
Ricky_Kwon 0:61da21bfd120 355 sprintf(sbuf, "cwd %s\r\n", dirname);
Ricky_Kwon 0:61da21bfd120 356 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 357
Ricky_Kwon 0:61da21bfd120 358 while(!bcdflag){
Ricky_Kwon 0:61da21bfd120 359 size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 360 if(size > 0){
Ricky_Kwon 0:61da21bfd120 361 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 362 printf("Received message from server: %s\r\n", rbuf);
Ricky_Kwon 0:61da21bfd120 363 #endif
Ricky_Kwon 0:61da21bfd120 364 if (!strncmp(rbuf, "250", 3)){
Ricky_Kwon 0:61da21bfd120 365 bcdflag = true;
Ricky_Kwon 0:61da21bfd120 366 }
Ricky_Kwon 0:61da21bfd120 367 else {
Ricky_Kwon 0:61da21bfd120 368 return 0;
Ricky_Kwon 0:61da21bfd120 369 }
Ricky_Kwon 0:61da21bfd120 370 }
Ricky_Kwon 0:61da21bfd120 371 }
Ricky_Kwon 0:61da21bfd120 372 bcdflag = false;
Ricky_Kwon 0:61da21bfd120 373 return 1;
Ricky_Kwon 0:61da21bfd120 374 }
Ricky_Kwon 0:61da21bfd120 375 else return 0;
Ricky_Kwon 0:61da21bfd120 376 }
Ricky_Kwon 1:2630b5456598 377 bool FTPClient::quit(){
Ricky_Kwon 1:2630b5456598 378
Ricky_Kwon 1:2630b5456598 379 if(blogin){
Ricky_Kwon 1:2630b5456598 380
Ricky_Kwon 1:2630b5456598 381 sprintf(sbuf, "quit \r\n");
Ricky_Kwon 1:2630b5456598 382 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 1:2630b5456598 383
Ricky_Kwon 1:2630b5456598 384 while(!bquitflag){
Ricky_Kwon 1:2630b5456598 385 size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 1:2630b5456598 386 if(size > 0){
Ricky_Kwon 1:2630b5456598 387 #ifdef DEBUG
Ricky_Kwon 1:2630b5456598 388 printf("Received message from server: %s\r\n", rbuf);
Ricky_Kwon 1:2630b5456598 389 #endif
Ricky_Kwon 1:2630b5456598 390 if (!strncmp(rbuf, "250", 3)){
Ricky_Kwon 1:2630b5456598 391 printf("%s\r\n", rbuf);
Ricky_Kwon 1:2630b5456598 392 bquitflag = true;
Ricky_Kwon 1:2630b5456598 393 }
Ricky_Kwon 1:2630b5456598 394 else {
Ricky_Kwon 1:2630b5456598 395 return 0;
Ricky_Kwon 1:2630b5456598 396 }
Ricky_Kwon 1:2630b5456598 397 }
Ricky_Kwon 1:2630b5456598 398 }
Ricky_Kwon 1:2630b5456598 399
Ricky_Kwon 1:2630b5456598 400 bquitflag = false;
Ricky_Kwon 1:2630b5456598 401 blogin = false;
Ricky_Kwon 1:2630b5456598 402 return 1;
Ricky_Kwon 1:2630b5456598 403 }
Ricky_Kwon 1:2630b5456598 404 else return 0;
Ricky_Kwon 1:2630b5456598 405 }
Ricky_Kwon 0:61da21bfd120 406 int FTPClient::pportc(char * arg)
Ricky_Kwon 0:61da21bfd120 407 {
Ricky_Kwon 0:61da21bfd120 408 char* tok=0;
Ricky_Kwon 0:61da21bfd120 409
Ricky_Kwon 0:61da21bfd120 410 strtok(arg,"(");
Ricky_Kwon 0:61da21bfd120 411 for (i = 0; i < 4; i++)
Ricky_Kwon 0:61da21bfd120 412 {
Ricky_Kwon 0:61da21bfd120 413 if(i==0) tok = strtok(NULL,",\r\n");
Ricky_Kwon 0:61da21bfd120 414 else tok = strtok(NULL,",");
Ricky_Kwon 0:61da21bfd120 415 ftpServer_data_ip_addr[i] = (uint8_t)atoi(tok);
Ricky_Kwon 0:61da21bfd120 416 if (!tok){
Ricky_Kwon 0:61da21bfd120 417 #ifndef DEBUG
Ricky_Kwon 0:61da21bfd120 418 printf("bad pport : %s\r\n", arg);
Ricky_Kwon 0:61da21bfd120 419 #endif
Ricky_Kwon 0:61da21bfd120 420 return -1;
Ricky_Kwon 0:61da21bfd120 421 }
Ricky_Kwon 0:61da21bfd120 422 }
Ricky_Kwon 0:61da21bfd120 423 remote_port = 0;
Ricky_Kwon 0:61da21bfd120 424 for (i = 0; i < 2; i++){
Ricky_Kwon 0:61da21bfd120 425 tok = strtok(NULL,",\r\n");
Ricky_Kwon 0:61da21bfd120 426 remote_port <<= 8;
Ricky_Kwon 0:61da21bfd120 427 remote_port += atoi(tok);
Ricky_Kwon 0:61da21bfd120 428 if (!tok){
Ricky_Kwon 0:61da21bfd120 429 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 430 printf("bad pport : %s\r\n", arg);
Ricky_Kwon 0:61da21bfd120 431 #endif
Ricky_Kwon 0:61da21bfd120 432 return -1;
Ricky_Kwon 0:61da21bfd120 433 }
Ricky_Kwon 0:61da21bfd120 434 }
Ricky_Kwon 0:61da21bfd120 435 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]);
Ricky_Kwon 0:61da21bfd120 436 return 0;
Ricky_Kwon 0:61da21bfd120 437 }
Ricky_Kwon 0:61da21bfd120 438
Ricky_Kwon 0:61da21bfd120 439
Ricky_Kwon 0:61da21bfd120 440
Ricky_Kwon 0:61da21bfd120 441
Ricky_Kwon 2:dbbe55b239d5 442