【发布时间】:2015-05-23 00:37:19
【问题描述】:
我正在用 C 语言编写 FTP 客户端程序。我正在使用阻塞套接字。我已将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:
webmaster@mincyt.gov.ar
=========================================================================
230 User anonymous logged in.
但它只是打印:
230-=====================================================================
【问题讨论】:
-
1) 向我们展示您的代码! 2) 它不会在某些服务器上读取整个消息:那么它读取的是什么? 3) 包含字符 '\r' '\n' 一起:这是什么意思?
-
我已经编辑了这个问题。请注意。
标签: ftp ftp-client unix-socket