#include #include #include #include #include #include #include #include int main(int argc, char ** argv){ struct sockaddr_in sad; sad.sin_port = htons(5143); sad.sin_addr.s_addr = INADDR_ANY; sad.sin_family = AF_INET; int skt = socket(AF_INET, SOCK_STREAM, 0); bind(skt, (struct sockaddr*)(&sad), sizeof(struct sockaddr_in)); listen(skt, 5); int sqcount = 0, tw = 0; while(1){ int client_fd = accept(skt, 0, 0); uint8_t type; while(read(client_fd, &type, 1) == 1){ if(type == 78){ int32_t nw; read(client_fd, &nw, 4); sqcount++; tw += nw; type = 65; write(client_fd, &type, 1); } else if(type == 81){ type = 83; write(client_fd, &type, 1); write(client_fd, &sqcount, 4); int32_t avg = tw / sqcount; write(client_fd, &avg, 4); printf("Sent average weight of %d\n", avg); } else { break; } printf("Received squirrel, count is %d, weight is %d\n", sqcount, tw); } close(client_fd); } return 0; }