linux下用c语言如何实现ftp传输文件

poptangchen12 2013-12-18 04:46:13
客户端,服务器端两个文件,客户端上传文件给服务器端,从服务器端下载文件,如何实现啊?求代码!!!谢谢大神们!!
...全文
228 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
看见繁华 2013-12-18
  • 打赏
  • 举报
回复
这是个从客户端输入一段数据发送给服务器的程序 , 你可以改改。 客户端的:argv【2】是服务器ip,argv【1】是你要输入的数据 。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #define MAXLINE 80 #define SERV_PORT 8000 int main(int argc,char *argv[]) { struct sockaddr_in servaddr; char buf[MAXLINE] = {}; int sockfd, n; char *str; if (argc < 2) { fputs("usage:...../client message\n",stderr); exit(1); } str = argv[1]; sockfd = socket(AF_INET,SOCK_STREAM,0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; inet_pton(AF_INET,argv[2],&servaddr.sin_addr); servaddr.sin_port = htons(SERV_PORT); connect(sockfd, (struct sockaddr *) &servaddr,sizeof(servaddr)); write(sockfd,str,strlen(str)); /* n = read(sockfd,buf,MAXLINE); printf("Response fron server:\n"); write(STDOUT_FILENO,buf,n); */ close(sockfd); return 0; } 服务器: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <fcntl.h> #define MAXLINE 80 #define SERV_PORT 8000 int main(void) { struct sockaddr_in servaddr, cliaddr; socklen_t cliaddr_len; int listenfd, connfd; char buf[MAXLINE] = {}; char str[INET_ADDRSTRLEN] = {}; int i, n; char buf1[100] = {0}; int fd; listenfd = socket(AF_INET,SOCK_STREAM,0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SERV_PORT); bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr)); listen(listenfd,20); printf("Accepting connections ...\n"); while(1) { cliaddr_len = sizeof(cliaddr); connfd = accept(listenfd,(struct sockaddr *) &cliaddr, &cliaddr_len); // strcat(buf1,(void *)&cliaddr); // strcat(buf1,"_"); // strcat(buf1,(void *)&cliaddr.sin_port); sprintf(buf1,"%s_%d.txt",inet_ntop(AF_INET,&cliaddr.sin_addr,str,sizeof(str)),ntohs(cliaddr.sin_port)); fd = open(buf1,O_RDWR|O_TRUNC|O_CREAT,0644); while((n = read(connfd,buf,MAXLINE)) > 0) { write(fd,buf,n); } close(fd); // n = read(connfd,buf,MAXLINE); printf("receive from %s at port %d\n",inet_ntop(AF_INET,&cliaddr.sin_addr,str,sizeof(str)),ntohs(cliaddr.sin_port)); /* for (i = 0;i < n;i++) buf[i] = toupper(buf[i]); */ write(connfd,buf,n); close(connfd); } }
帅得不敢出门 2013-12-18
  • 打赏
  • 举报
回复
用libcurl吧
bfdeh 2013-12-18
  • 打赏
  • 举报
回复
随便一搜一大把,你都舍不得用下搜索引擎?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧