最近做了一下linux C网络方面的项目,简单的写了一下服务器于客户端之间上传,下载文件,利用并发服务器,可以实现多个客户端同时上传,下载。
写的不好,还请大神多多指教!多的不说,一切都在代码中,部分代码如下所示:
/*server.c */ 服务器端
void *recvmation(void *arg) //接收客户端发送过来的信息,线程
{
int my_fd = *((int *)arg);
int n;
while(1)
{
n = recv(my_fd, (struct regis *)&RecvReg, sizeof(RecvReg), 0);
if(n == -1)
{
perror("fail1 to receive!\n");
//exit(1);
}
else if(n == 0)
{
continue; //如果客户端断开连接,服务器继续监听接收
}
printf("filename:%s\n", RecvReg.filename);
printf("flag = %s\n", RecvReg.flag);
printf("my_fd = %d\n", my_fd);
if(strncmp(RecvReg.flag, "sendfile", 8) == 0) //客户端上传文件到服务器
{
char Send_Filename[FILE_NAME];
strcpy(Send_Filename, RecvReg.filename);
recvfile(my_fd, Send_Filename); //接受客户端发来的文件
}
if(strncmp(RecvReg.flag, "lookfile", 8) == 0) //客户端从服务器下载文件
{
char Down_Filename[FILE_NAME];
DIR *dp = NULL;
struct dirent *dirp;
if((dp = opendir("/root/server/dai")) == NULL) //查找并输出当前文件夹下的所有文件 //此路径可以根据自己需要修改
printf("cannot open\n");
while((dirp = readdir(dp)) != NULL)
{
printf("%s\n",dirp->d_name);
strc