您的位置:首页 > 其它

20 课程总结,单机模式下的文件上传与下载

2017-02-28 20:54 260 查看
1. 例子:单机模式下的文件上传送和下载

(1)    输入服务器的地址:  路径和目录名

(2)  列出服务器中有哪些文件:   opendir  readdir  

(3)  输入从服务器下载的文件名    或  上传文件到服务器的文件名

(4)  文件下载                    或   文件上传送

文件IO:  open read write close

标准IO    fopen fputs fgets  fputc fgetc fread fwrite fclose

2. 代码

#include "stdio.h"
#include "sys/types.h"
#include "dirent.h"
#include "string.h"
#include "unistd.h"
#include "fcntl.h"

int main(int argc, char *argv[]){
DIR *dp;
int fd;
struct dirent *dir;
char server[128] = {0};
int src_fd,des_fd;
char file[128]={0};
char buf[128]={0};
int ret;
start:
printf("please input server PATH and Directory name\n");

scanf("%s",server);

//list server files
dp = opendir(server);
if(dp == NULL){
printf("open server %s error\n",server);
goto start;
}
printf("open server %s success\n",server);

//read server dir
while(1){
dir = readdir(dp);
if(dir == NULL){
break;
}else{
printf("inode=%ld name =%s\n",dir->d_ino,dir->d_name);
}
}

printf("please input download file\n");
scanf("%s",file);

//open server file
src_fd = open(strcat(strcat(server,"/"),file),O_RDONLY);
if(src_fd < 0){
printf("open download file :%s\n",file);
return -1;
}
printf("open download file %s success\n",file);

des_fd = open(file,O_CREAT | O_WRONLY,0777);
if(des_fd < 0){
printf("create file %s error\n",file);
return -2;
}
printf("create file %s success\n",file);

while(1){
ret = read(src_fd,buf,128);
if(ret < 128){
break;
}
write(des_fd,buf,ret);
}
write(des_fd,buf,ret);

close(des_fd);
close(src_fd);
closedir(dp);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: