我需要设置TYPE命令;模式是“ I”(用于图像)或“ A”(用于ASCII)。要测试图像/二进制模式,请尝试从FTP服务器传输jpg / png图像文件。 (创建自己的FTP服务器)
但是,我不确定如何执行此操作,下面是一些代码。我几乎复制了stor / put命令-起作用
当前,当我尝试从本地主机获取图像时,收到的图像大小为0 byes。
还请注意:bytes = recv(ns,&receive_buffer [n],1,0); //逐字节接收...在我的框架/启动代码中。
...
if(strncmp(receive_buffer,"TYPE",4) == 0){ //attempt
int bytesRecieved1 = 0;
char codeStr[250];
sscanf(receive_buffer,"TYPE %c\r\n",codeStr);
char code = codeStr[0];
char tempBuff[SEGMENT_SIZE];
memset(tempBuff,0, sizeof(tempBuff));
int _bytes1 = 0;
switch(code){
case 'I': //
sprintf(send_buffer, "200 Switching to Binary mode\r\n");
while (1){
if(active == 0) {
_bytes1 = recv(ns, &receive_buffer[n], 1, 0);
}else{
_bytes1 = recv(ns, &receive_buffer[n], 1, 0);
}
if (_bytes1 < 0) {
sprintf(send_buffer,"226 Successfully received %d bytes\r\n",bytesRecieved1);
bytes = sendString(&ns,send_buffer);
printf("Success");
break;
bytesRecieved1 += _bytes1;
}
}
}
bytes = sendString(&ns,send_buffer);
return;
}
...
应该能够看到图像。
答案 0 :(得分:1)
您不应通过启动文件传输来响应TYPE
命令。只有在收到STOR
命令后,才应该这样做。
要实施TYPE
命令,您只需响应200 OK
并在内部记住,您需要对即将进行的文件传输使用二进制(或ascii)模式(一旦收到STOR
或{ {1}}。