Я пишу клиентскую программу FTP на C. Я использую блокирующий сокет. Я поместил recv ()
в цикл while и прерываю его, когда последние два полученных символа равны \r\n
. Я могу запустить его на некоторых серверах, но на некоторых серверах, таких как ftp.secyt.gov.ar
, он не читает сообщение целиком.
Я думаю, что проблема в сообщениях с сервера, которые содержат символы \r
\n
вместе.
Как мне поступить в таком случае?
После отправки имени пользователя и пароля на сервер ftp.secyt.gov.ar
я хочу распечатать сообщение, полученное с сервера.
password = getpass("Password: ");
sprintf(pass, "PASS %s\r\n",password);
send(sockfd, pass, strlen(pass), 0);
while((no_of_bytes = recv(sockfd, message_from_server, MAXSZ, 0)) > 0)
{
message_from_server[no_of_bytes] = '\0';
printf("%s\n", message_from_server);
if (message_from_server[no_of_bytes-2] == '\r' &&
message_from_server[no_of_bytes-1] == '\n')
break;
}
Сервер отправляет это сообщение:
230-=====================================================================
BIENVENIDOS AL SERVIDOR FTP DE LA MINCyT
----------------------------------------
Usuario anonymous, desde la maquina ::ffff:116.203.73.60, gracias por
utilizar el FTP del Ministerio de Ciencia, Tecnologia e
Innovacion Productiva.
Para sugerencias, consultas o informacin adicional nuestros correos
electrnicos son:
[email protected]
=========================================================================
230 User anonymous logged in.
Но печатает только:
230-=====================================================================