**
## service.c
**
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define N 128
int process_list(int newsockfd,char *buf)
{
DIR * dirp;
int ret;
struct dirent * direntp;
dirp = opendir("./");
if(dirp == NULL)
{
perror("opendir");
exit(-1);
}
while( (direntp = readdir(dirp)) != NULL)
{
if(strncmp(direntp->d_name,".",1) == 0 ) continue;
strcpy(buf,direntp->d_name);
ret = write(newsockfd,buf,N);
if(ret < 0)
{
perror("write");
exit(-1);
}
}
close(newsockfd);
return 0;
}
int process_get(int newsockfd,char *buf)
{
int ret,fd,nbytes;
fd = open(buf+4,O_RDWR);
if(fd < 0)
{
perror("open");
exit(-1);
}
while( (nbytes= read(fd,buf,N)) > 0)
{
ret = write(newsockfd,buf,nbytes);
if(ret < 0)
{
perror("write");
exit(-1);
}
}
close(newsockfd);
return 0;
}
int process_put(int newsockfd,char *buf)
{
int ret,fd,nbytes;
fd = open(buf+4,O_RDWR|O_CREAT|O_TRUNC,0664);
if(fd < 0)
{
perror("open");
exit(-1);
}
while( (nbytes= read(newsockfd,buf,N)) > 0)
{
ret = write(fd,buf,nbytes
基于TCP服务器文件上传与下载
最新推荐文章于 2024-08-08 00:25:43 发布