網路程式設計 tcp檔案伺服器

2021-05-28 11:52:49 字數 3506 閱讀 6651

客戶端功能如下:

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期我發了一期檔案伺服器的好處,那麼這期我就講解下如何搭建檔案伺服器,來方便我們的日常辦公。接下來我們來講解下檔案伺服器構造。如下圖,基本有光貓 交換機 伺服器 普通辦公電腦幾個部分組成。如果你是個新廠地,從無到有,這個時候要提前做好規劃,了解場地的布局,根據實際情況畫出網路拓撲圖,然後再進行...