📄 server2.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 dir[20][10];
int n=0;
int i=0;
while((ptr=(readdir(dir)))!=NULL)
{
printf("d_name: %s\n", ptr->d_name);
//if(opendir(ptr->d_name)
strcpy(file_dir[n],ptr->d_name); n++;
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<n;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");
long size = ftell(fp);
//long size=3;
char *buffer = (char*)malloc(sizeof(char)*size);
for(i=0 ; i<size ; i++)
{
fread(buffer,1,size,fp);
printf("%s\n",buffer);
if(write(connfd, buffer, 100) == -1){
printf("Error: write()\n");
exit(1);
}
}
if(write(connfd, "END", 100) == -1){
printf("Error: write()\n");
exit(1);
}
if(write(connfd, "File Transfer Complete!", 100) == -1){
printf("Error: write()\n");
exit(1);
}
fclose(fp);
}
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 + -