C:331/530中的FTP请指定密码
我在用C语言发送Pass命令时遇到了一个问题,我正在编写一个简单的程序,连接到ftp服务器并将列表打印到标准输出C:331/530中的FTP请指定密码,c,ftp,client,C,Ftp,Client,我在用C语言发送Pass命令时遇到了一个问题,我正在编写一个简单的程序,连接到ftp服务器并将列表打印到标准输出 /* ----------- SET UP CONNECTION ---------*/ //creating socket if((sock=socket(AF_INET,SOCK_STREAM,0))<0) { perror("Main: Creating socket:"); return ERROR; } //Zero out addr memset
/* ----------- SET UP CONNECTION ---------*/
//creating socket
if((sock=socket(AF_INET,SOCK_STREAM,0))<0)
{
perror("Main: Creating socket:");
return ERROR;
}
//Zero out addr
memset(&addr, 0, sizeof(addr));
//Getting host name
hPtr=gethostbyname(url.host);
if(hPtr==NULL)
{
perror("Error while getting host name:");
return ERROR;
}
//Setting up addr for connect
addr.sin_addr.s_addr = inet_addr(inet_ntoa(*((struct in_addr *)hPtr->h_addr_list[0])));
addr.sin_family = AF_INET;
addr.sin_port = htons(url.port);
if((connect(sock, (struct sockaddr *)&addr, sizeof(struct sockaddr))) < 0)
{
perror("Error: Connect socket :");
close(sock);
return ERROR;
}
//Wait for Service ready
bzero(buffer, MAXBUF);
if(recv(sock, buffer, sizeof(buffer),0)<0)
{
perror("Error while receiving socket:");
}
printf("%s", buffer);
/* ----- LOGIN USER -----------*/
bzero(buffer, MAXBUF);
//setup login
strcpy(buffer,"USER ");
strcat(buffer,url.user);
strcat(buffer,"\n");
//Send login
if((send(sock,buffer,MAXBUF,0))<0)
{
perror("Error while sending socket:");
}
//Receive answer
if((recv(sock, buffer, sizeof(buffer),0))<0)
{
perror("Error while recieving socket:");
}
printf("%s", buffer);
//Send password
bzero(buffer, MAXBUF);
//setup password
strcpy(buffer,"PASS ");
strcat(buffer,url.pass);
strcat(buffer,"\n");
printf("%s",buffer);
//Send password
if((send(sock,buffer,MAXBUF,0))<0)
{
perror("Error while sending socket:");
}
//Receive response
if((recv(sock, buffer, sizeof(buffer),0))<0)
{
perror("Error while recieving socket:");
}
printf("%s", buffer);
close(sock);
return OK;
/*------------设置连接---------*/
//创建套接字
if((sock=socket(AF_INET,sock_STREAM,0))h_addr_list[0]);
addr.sin_family=AF_INET;
addr.sin_port=htons(url.port);
if((connect(sock,(struct sockaddr*)和addr,sizeof(struct sockaddr)))<0)
{
perror(“错误:连接套接字:”);
关闭(袜子);
返回误差;
}
//等待服务就绪
bzero(缓冲区,MAXBUF);
如果(recv(sock,buffer,sizeof(buffer),0)请尝试使用\r\n作为行尾,例如,就像您在解释中所写的那样,但与您在代码中所做的不同。好的,因此问题在于发送
我需要发送确切的字节数,所以我把
在send()调用中使用strlen(buffer),它开始工作。
项目已成功完成。感谢您的帮助
“尝试发送strlen(缓冲区)而不是MAXBUFF字符。-17小时前的cup”您确实得到了结果,因此此C代码可能没有问题。没有seg错误或类似情况发生。我怀疑该密码毕竟有问题,因此我们可能无法帮助您。尝试发送strlen(缓冲区)是的,我两个都试过了,在我发布代码的州,情况就是这样。