client 是自己用 C 写的
#define BUFFER_SIZE 1024
char recv_buffer[BUFFER_SIZE];
char send_buffer[BUFFER_SIZE];
// ...
else if (start_with(cmd_read, "cd"))
{
char *token;
const char delim[2] = " \t";
token = strtok(cmd_read, delim);
char *path = strtok(NULL, delim);
if (path == NULL)
{
printf("please input the path\n");
continue;
}
sprintf(send_buffer, "CWD %s\r\n", path);
send_cmd(client_socket, send_buffer);
length = get_respond(client_socket, recv_buffer);
printf("%s", recv_buffer);
}
ftp server 什么要发送两次错误信息?这个如何处理呢?
1
ryd994 2018-06-07 17:32:28 +08:00 via Android
看起来
|
2
ryd994 2018-06-07 17:32:48 +08:00 via Android
看起来是 550 到 550end 之间都是
|
3
qiyuey 2018-06-07 19:59:47 +08:00
最近正好写了个 FTP Server,没办法正确处理,确实会终止,因为要不终止是有成本的
|
4
salamanderMH OP 我在 cd 命令的处理上,补了一点判断
``` // 250 success length = get_respond(client_socket, recv_buffer); printf("%s", recv_buffer); if (!is_correct_respond(recv_buffer, 250)) { // 再接收一次数据,windows FTP server 问题 get_respond(client_socket, recv_buffer); printf("%s", recv_buffer); } ``` 不是 250 返回的话,再接收一次数据,感觉这样处理有点。。。 |