⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.c

📁 實現一套網路TCP/IP的嵌入式系統測試程式...希望可以在多平台下運行
💻 C
字号:
#include <stdio.h> 
#include <stdlib.h>
#include <string.h> 
#include <sys/socket.h> 
#include <netinet/in.h> 

#include<sys/types.h>
#include<dirent.h>


int main(){  
  struct sockaddr_in addr_svr; 
  struct sockaddr_in addr_cli; 
  
  int sockfd; 
  int connfd; 

  int sLen = sizeof(addr_cli); 
  
  char id[100];
  char pwd[100];
  char msg[100];
  char tst[50];
  char filename[100];
  // Set Server Address 
  memset(&addr_svr, 0, sizeof(addr_svr));   
  addr_svr.sin_family = AF_INET;  
  addr_svr.sin_port = htons(80);      
  addr_svr.sin_addr.s_addr = inet_addr("192.168.0.155");
  
  // Create Socket 
  sockfd = socket(AF_INET, SOCK_STREAM, 0);  
  
  // Bind Socket 
  if(bind(sockfd, (struct sockaddr *)&addr_svr, sizeof(addr_svr)) == -1){
    printf("Error: bind()\n"); 
    exit(1); 
  } 
  
  // Make Listening Socket 
  if(listen(sockfd, 10) == -1){   
    printf("Error: listen()\n"); 
    exit(1);  
  }  
  
  for(;;){  // Get Connected Socket 
    connfd = accept(sockfd, (struct sockaddr *)&addr_cli, &sLen); 
  
    if(connfd == -1){    
      printf("Error: accept()\n"); 
      exit(1);   
    }
    // Read Data From Client

while(strcmp(msg,"ok"))
{    
    if(read(connfd, id, 10) == -1){ 
      printf("Error: read()\n"); 
      exit(1); 
    }
    printf("%s\n", id);
    if( strcmp(id,"final")==0)  strcpy(msg,"ok");
    else strcpy(msg,"false");
    
    if(write(connfd, msg, strlen(msg)+1) == -1){    
      printf("Error: write()\n");  
      exit(1);   
    }     

}
strcpy(msg,"none");
while(strcmp(msg,"ok"))
{    
      if(read(connfd, pwd, 10) == -1){ 
           printf("Error: read()\n"); 
           exit(1); 
      }
      if(strcmp(pwd,"0916")==0) strcpy(msg,"ok");
      else strcpy(msg,"false");
    
      if(write(connfd, msg, strlen(msg)+1) == -1){    
           printf("Error: write()\n");  
           exit(1);   
      }    
}

printf("Here are the files\n");
  
//load file from deafault folder of server
DIR *dir = opendir("folder_s/");

struct dirent *ptr;
char folder[100];


char file_dir[20][10];
char dirs[20][10];
int n=0;int n2=0;
int i=0;
while((ptr=(readdir(dir)))!=NULL)
{
	printf("d_name: %s\n", ptr->d_name);
	printf("d_name: %c\n", ptr->d_type);
	//if(opendir(ptr->d_name)==NULL)
    strcpy(file_dir[n1],ptr->d_name); n++;
    //else
    //{strcpy(dirs[n2],ptr->d_name); n2++;}
    
    strcat(folder,ptr->d_name);
    strcat(folder,"\n");
    //printf("d_name: %s\n", ptr->d_name);
}


if(write(connfd, folder, 100) == -1){     //write detail info of folder....ls
    printf("Error: write()\n");  
    exit(1);
}



while(1)
{

char filepath[100]="folder_s/";
if(read(connfd, filename, 100) == -1){ 
           printf("Error: read()\n"); 
           exit(1); 
      }
if(strcmp(filename,"exit")==0)
	break;      
//read(connfd, filename, 100);
printf("%s\n",filename);
//system("pause"); 


for(i=0;i<n1;i++)
{
    
    printf("%s\n",file_dir[i]);
    if(strcmp(filename,file_dir[i])==0)
    {
       printf("file exist\n");
       break;
    }   
    else
        printf("file not exist\n");
}

//strcat(filepath,"test/");
strcat(filepath,filename);
printf("%s\n",filepath);
FILE *fp = fopen(filepath, "r");
while(fgets(tst,10,fp)!=NULL)
{
    if(write(connfd, tst, strlen(tst)+1) == -1){    
    printf("Error: write()\n");  
    exit(1);
    }
    printf("%s\n",tst);  
}

if(write(connfd, "END", 10) == -1){    
    printf("Error: write()\n");  
    exit(1);
}
fclose(fp);
printf("file transfer complete\n");
strcpy(filepath,"");

}
closedir(dir);

}


//fputs(content, fin);
//if(write(connfd,"jyhfjfjgjyfjyfjyfjyfhjkugjuyfjyf", 100) == -1){    
      //printf("Error: write()\n");  
      //exit(1);   
    //} 
 /*   
    if(write(connfd, QueryBuf1, strlen(QueryBuf1)+1) == -1){    
      printf("Error: write()\n");  
      exit(1);   
    }     
         
    if(read(connfd, AnteBuf, 20) == -1){ 
      printf("Error: read()\n"); 
      exit(1); 
    } 
    //Ante = atoi(AnteBuf);
  
    // Write Data Back to Client 
    if(write(connfd, QueryBuf2, strlen(QueryBuf2)+1) == -1){    
      printf( "Error: write()\n");  
      exit(1);   
    }
    
    //Choice = atoi(ChoiceBuf);
    //sprintf(Result, "The winner is NO.%d\nYou lose the game!\n", winnerNO);  
  } 
*/

  return 0; 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -