服务器端数据接收部分架构,目前全部代码如下:
1 #include <stdio.h> 2 #include <string.h> 3 #include <sys/types.h> 4 #include <sys/socket.h> 5 #include <arpa/inet.h> 6 #include <time.h> 7 #include "message.h" 8 9 #define MAX_LINE 1000 10 #define LISTENQ 5 11 12 int main(int argc,char **argv) 13 { 14 int listenfd,connfd; 15 struct sockaddr_in servaddr; 16 char buff[MAX_LINE]; 17 time_t ticks; 18 19 listenfd=socket(AF_INET,SOCK_STREAM,0); 20 21 bzero(&servaddr,sizeof(servaddr)); 22 servaddr.sin_family=AF_INET; 23 servaddr.sin_addr.s_addr=htonl(INADDR_ANY); 24 servaddr.sin_port=htons(13); 25 26 bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr)); 27 28 listen(listenfd,LISTENQ); 29 30 int n,i; 31 int recv_buff[10]; 32 int fil_cnt=0;//how many files are there now,init 0 33 ##TODO##:init the file array. 34 int **fil_list=FileInit(); 35 Message package,aim; 36 for(;;) 37 { 38 connfd=accept(listenfd,(struct sockaddr *)NULL,NULL); 39 40 n=recv(connfd,&package,sizeof(Message),MSG_WAITALL); 41 if(n<0) 42 printf("Message fail!\n"); 43 else if(package.op==0)//upload node 44 { 45 //if:local table is full 46 if(NodeRecord(package.node,fil_list,fil_cnt,buf_tab)==0) 47 { 48 FileCreate(fil_list,buf_tab); 49 ++fil_cnt; 50 } 51 } 52 else//download node 53 { 54 Nodesearch(package.node,fil_list,fil_cnt,buf_tab,&aim.node) 55 aim.op=package.op; 56 aim.client_num=package.client_num; 57 } 58 59 60 printf("HERE COMES THE TIME!\n"); 61 62 ticks=time(NULL); 63 snprintf(buff,sizeof(buff),"%.24s\r\n",ctime(&ticks)); 64 write(connfd,buff,strlen(buff)); 65 66 close(connfd); 67 } 68 }
时间函数在完成正式功能之前就先带着吧……
项目报告140306:服务器端架构搭建,布布扣,bubuko.com
原文:http://www.cnblogs.com/keepcalmandcarryon/p/3584949.html