/* Control commnads */
void controlThread(void){
if((contaccsock = accept(contsock,(struct sockaddr *)&contcaddr,&len)) < 0){
perror("Error in accept contaccsock.\n");
exit(1);
}
close(contsock);
while(1){
recv(contaccsock,recvbuf,1024,MSG_WAITALL);
controllCommand(recvbuf[0]);
bzero(recvbuf,1024);
bzero(sendbuf,1024);
}
close(contaccsock);
}
/* Disk Used */
void diskThread(void){
unsigned char diskbuf[8];
while(1){
recvfrom(disksock,diskbuf,8,0,(struct sockaddr *)&caddr,&listlen);
memcpy((char *)&dynamic_data.fulldisk,diskbuf,4);
memcpy((char *)&dynamic_data.useddisk,diskbuf+4,4);
}
}
/* List Data */
void listThread(void){
/* List Data Socket */
while(1){
recvfrom(listsock,dynamic_data.listdata,datasize,0,(struct sockaddr *)&caddr,&listlen);
multisend((char *)&dynamic_data.listdata);
}
}
.
.
.
int main(int argc,char *argv[]){
pthread_t controlthread,diskthread,listthread;
.
.
.
/* Create Thread */
pthread_create(&controlthread,NULL,(void *)&controlThread,NULL);
pthread_create(&diskthread,NULL,(void *)&diskThread,NULL);
pthread_create(&listthread,NULL,(void *)&listThread,NULL);
.
.
.
}