ftp客户端编程中文件上传的问题(附代码)
第一次写ftp客户端,有些地方不太懂,大家多指点指点
#define MAX_DATASIZE 1000
#define SERVER_PORT 21
#define FTP_DATA_PORT 20
#define SERVER_ADDR "192.168.12.239"
int result;
int recvnum;
char buf[MAX_DATASIZE];
void sendcmd(int sock_ftp, char *str);
main(int argc, char *argv[], char *env[])
{
int sock_ftp;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
int i = 0;
char *str;
sock_ftp = socket(AF_INET, SOCK_STREAM, 0);
if(sock_ftp == -1)
{
perror("sock"
exit(1);
}
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(SERVER_PORT);
server_addr.sin_addr.s_addr = inet_addr(SERVER_ADDR);
bzero(&(server_addr.sin_zero),;
result = connect(sock_ftp, (struct sockaddr*)&server_addr, sizeof(struct sockaddr));
if(result == -1)
{
}
memset(buf, 0, sizeof(buf));
recvnum = recv(sock_ftp, buf ,MAX_DATASIZE, 0);
if( recvnum == -1)
{
perror("recv"
exit(1);
}
#ifdef DEBUG
printf("answer of connect is: %sn",buf);
#endif
str = "USER mmrn";
sendcmd(sock_ftp, str);
str = "ASS ilovemmrn";
sendcmd(sock_ftp, str);
str = "TYPE Irn";
sendcmd(sock_ftp, str);
str = "ASVrn";
sendcmd(sock_ftp, str);
str = "ORT 192,168,12,231,4,150rn";
sendcmd(sock_ftp, str);
// str = "WDrn";
// sendcmd(sock_ftp, str);
// str = "LIST client.crn";
// sendcmd(sock_ftp, str);
str = "STOR ee.docrn";
sendcmd(sock_ftp, str);
int fd;
运行没有错误,但是服务器端只是有个ee。doc的文件,大小为0。是不是这个命令只创建文件名,而具体的文件传输另外写代码。下面具体改怎么做?谢谢
}
void sendcmd(int sock_ftp, char *str)
{
memcpy(buf, str, strlen(str));
result = send(sock_ftp, buf, strlen(str), 0);
if(result == -1)
{
}
memset(buf, 0, sizeof(buf));
recvnum = recv(sock_ftp, buf ,MAX_DATASIZE, 0);
if( recvnum == -1)
{
perror("recv"
exit(1);
}
#ifdef DEBUG
printf("answer of send is: %sn",buf);
#endif
return;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这个问题其实可以非常简单的回答你.
光发个协议号 是没用的.实际文件没有传过去.
谢谢上面的回答
我在论坛里也搜索了相关ftp编程问题的帖子,大部分都是这种回答
我觉得论坛里总是有类似的答案不太好
我也是看了《tcp ip详解》以及ftp协议的书籍后才按照自己的理解编的
但是理解协议和编出代码是两回事,有时候你按照协议来编,很可能一个小地方错误就老是实现不了
所以,我希望各位在给出建议的同时也给出问题的解决方法,不要只是这样简单的一句话
很多编程的入门人员不肯能达到,看懂协议就能编的出来的境界的
最好的办法还是看看RFC文档吧.
http://www.ietf.org/rfc/rfc959.txt