*单机模式模式下的文件上传下载的服务器的实现*
步骤如下:
步骤1)输入服务器的地址:路径和目录名
步骤2)列出服务器中的所有文件:opendir ,readdir
步骤3)输入要从文件服务器下载的文件名 或 上传文件到服务器的文件名
步骤4) 下载文件 或 上传文件
涉及的(文件IO)系统调用函数有:open(), read(), write(), close()
涉及的(标准IO)c库函数有:fopen(),fputs(),fgets(), fputc(),fgetc(),fread(),fwrite(),fclose()
客户端client实现代码C语言:
#include"stdio.h"
#include"dirent.h"
#include"sys/types.h"
#include"string.h"
#include"unistd.h"
#include"fcntl.h"
int main()
{
int src_fp,des_fp;
DIR *dp;
char server[128];
struct dirent *dir;
start:
printf("please enter server Path and Directory name\n");
scanf("%s",server);
//open server all of files
dp=opendir(server);
if(dp==NULL)
{
printf("open server:%s failure\n",server);
goto start;
}
printf("open server %s success\n",server);
while(1)
{
dir=readdir(dp);//display all of files in server Directory
if(dir==NULL)
{
break;
}
else
{
printf("dir_inode=%ld, dir_name=%s\n",dir->d_ino,dir->d_name);
}
}
char file[128]={0};
//start to downloard file form Server Directory
printf("please enter a downloard file name\n");
scanf("%s",file);
//open server Directory file
src_fp=open(strcat(strcat(server,"/"),file),O_RDONLY);
if(src_fp<0)
{
printf("open src_file %s failure\n",file);
return -1;
}
printf("open src_file %s succes\n",file);
//open des_file
des_fp=open(file,O_CREAT | O_WRONLY,0777);
if(des_fp<0)
{
printf("open des_file %s failure\n",file);
return -2;
}
printf("open des_file %s success\n",file);
int read_ret;
char read_buf[128]={0};
while(1)
{
read_ret=read(src_fp,read_buf,128);
write(des_fp,read_buf,read_ret);
if(read_ret<128)
{
printf("downloard over!");
break;
}
}
close(src_fp);
close(des_fp);
closedir(dp);
return 0;
}
服务器端server的实现代码:
#include"stdio.h"
#include"dirent.h"
#include"sys/types.h"
#include"string.h"
#include"unistd.h"
#include"fcntl.h"
int main()
{
int src_fp,des_fp;
DIR *dp;
char server[128];
struct dirent *dir;
start:
printf("please enter server Path and Directory name\n");
scanf("%s",server);
//open server all of files
dp=opendir(server);
if(dp==NULL)
{
printf("open server:%s failure\n",server);
goto start;
}
printf("open server %s success\n",server);
while(1)
{
dir=readdir(dp);//display all of files in server Directory
if(dir==NULL)
{
break;
}
else
{
printf("dir_inode=%ld, dir_name=%s\n",dir->d_ino,dir->d_name);
}
}
char file[128]={0};
//start to uploard file to Server Directory
printf("please enter a uploard file name\n");
scanf("%s",file);
//open and create upload file on server
des_fp=open(strcat(strcat(server,"/"),file),O_CREAT | O_RDWR | O_TRUNC,0777);
if(des_fp<0)
{
printf("open des_file %s failure\n",file);
return -1;
}
printf("open des_file %s succes\n",file);
//open src_file
src_fp=open(file,O_RDONLY);
if(src_fp<0)
{
printf("open src_file %s failure\n",file);
return -2;
}
printf("open src_file %s success\n",file);
int read_ret;
char read_buf[128]={0};
while(1)
{
read_ret=read(src_fp,read_buf,128);
write(des_fp,read_buf,read_ret);
if(read_ret<128)
{
printf("uploard over!");
break;
}
}
close(src_fp);
close(des_fp);
closedir(dp);
return 0;
}
仅供参考!