客戶端功能如下:
1.支援以下命令:
help:顯示客戶端所有命令和說明
put:上傳檔案
quit: 退出客戶端
伺服器端功能(單程序):
解析客戶端命令並提供相應服務
伺服器端:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define n 128
typedef struct sockaddr sa;
void processlist(int connfd)
closedir(mydir);
return;
}void processget(int connfd,char buf)
buf[0]='y';
send(connfd,buf,n,0);
while((nbyte=read(fd,buf,n))>0)
close(fd);
return;
}void processput(int connfd,char buf)
while((nbyte=recv(connfd,buf,n,0))>0)
close(fd);
return;
}int main(int argc,char **argv)
printf("socket is %d\n",listenfd);
memset(&server_addr,0,sizeof(server_addr));
server_addr.sin_family=af_inet;
server_addr.sin_port=htons(8888);
server_addr.sin_addr.s_addr=htonl(inaddr_any);
if(bind(listenfd,(sa *)&server_addr,sizeof(server_addr))<0)
listen(listenfd,5);
while(1)
recv(connfd,buf,n,0);
switch(buf[0])
close(connfd);
}return 0;
}客戶端:
/* client2 */
#include
#include
#include
#include
#include
#include /* see notes */
#include
#include
#include
#include
#define n 128
typedef struct sockaddr sa;
void printhelp()
void processlist(struct sockaddr_in server_addr)
if (connect(sockfd, (sa *)&server_addr, sizeof(server_addr)) < 0)
strcpy(buf, "l");
send(sockfd, buf, n, 0);
while ((nbyte = recv(sockfd, buf, n, 0)) != 0)
error_1:
close(sockfd);
return;
}void processget(struct sockaddr_in server_addr, char command)
if (connect(sockfd, (sa *)&server_addr, sizeof(server_addr)) < 0)
sprintf(buf, "g%s", command+4);
send(sockfd, buf, n, 0);
recv(sockfd, buf, n, 0);
if (buf[0] == 'n') // no such file
if ((fd = open(command+4, o_wronly|o_creat|o_trunc, 0666)) < 0)
while ((nbyte = recv(sockfd, buf, n, 0)) > 0)
close(fd);
error_2:
close(sockfd);
return;
}void processput(struct sockaddr_in server_addr, char command)
if (connect(sockfd, (sa *)&server_addr, sizeof(server_addr)) < 0)
if ((fd = open(command+4, o_rdonly)) < 0)
sprintf(buf, "p%s", command+4);
send(sockfd, buf, n, 0);
while ((nbyte = read(fd, buf, n)) > 0)
close(fd);
error_3:
close(sockfd);
return;
}int main(int argc, char *argv)
// ***:step 1 int socket(int domain, int type, int protocol);
if ((sockfd = socket(pf_inet, sock_stream, 0)) < 0)
#ifdef _debug_
printf("socket is %d\n", sockfd);
#endif
// ***:step 2 int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = pf_inet;
server_addr.sin_port = htons(atoi(argv[2]));
server_addr.sin_addr.s_addr = inet_addr(argv[1]);
//server_addr.sin_addr.s_addr = htonl(inaddr_any);
while ( 1 )
else if (strcmp(command, "list") == 0)
else if (strncmp(command, "get ", 4) == 0)
else if (strncmp(command, "put ", 4) == 0)
else if (strcmp(command, "quit") == 0)
else
}return 0;
}
linux網路程式設計 TCP檔案伺服器
程式功能 程式如下 1 server.c include include include include include include include struct message void list file int struct message void get file int struct...
檔案伺服器
實現對檔案增刪改查,若是伺服器需要考慮的壓縮 檔案你儲存在電腦裡面也可以,儲存在電腦裡面給乙個路徑就可以了,為什麼要用檔案伺服器 對檔案的操作有記錄 比如增刪改查,可以花式查詢並對結果做操作,之前需要用比較複雜的正則才可以 做到,比如按照日期查詢,尤其是數量高到幾萬的時候,window自帶的檔案管理...
檔案伺服器搭建 如何搭建檔案伺服器?
1.前2期我發了一期檔案伺服器的好處,那麼這期我就講解下如何搭建檔案伺服器,來方便我們的日常辦公。接下來我們來講解下檔案伺服器構造。如下圖,基本有光貓 交換機 伺服器 普通辦公電腦幾個部分組成。如果你是個新廠地,從無到有,這個時候要提前做好規劃,了解場地的布局,根據實際情況畫出網路拓撲圖,然後再進行...