int main(void) { int sockfd; struct sockaddr_in my_addr; int sin_size; sockfd = socket(AF_INET, SOCK_DGRAM, 0); //create socket if (sockfd <0) { printf("error in socket!"); exit(1); } my_addr.sin_family = AF_INET; my_addr.sin_port = htons(MYUDP_PORT); my_addr.sin_addr.s_addr = INADDR_ANY;//inet_addr("172.0.0.1"); bzero(&(my_addr.sin_zero), 8); if (bind(sockfd, (struct sockaddr *) &my_addr, sizeof(struct sockaddr)) == -1) { //bind socket printf("error in binding"); exit(1); } while (1) { printf("waiting for data\n"); str_ser(sockfd); } close(sockfd); exit(0); }
int main(int argc, char **argv) { int sockfd, con_fd, ret; struct sockaddr_in my_addr; struct sockaddr_in their_addr; int sin_size; int error_percent; //To store the percent of errors (prob of drop) // char *buf; pid_t pid; if (argc != 2) { printf("parameters not match"); } error_percent = atoi(argv[1]); sockfd = socket(AF_INET, SOCK_STREAM, 0); //create socket if (sockfd <0) { printf("error in socket!"); exit(1); } my_addr.sin_family = AF_INET; my_addr.sin_port = htons(MYTCP_PORT); my_addr.sin_addr.s_addr = htonl(INADDR_ANY);//inet_addr("172.0.0.1"); bzero(&(my_addr.sin_zero), 8); ret = bind(sockfd, (struct sockaddr *) &my_addr, sizeof(struct sockaddr)); //bind socket if (ret <0) { printf("error in binding"); exit(1); } ret = listen(sockfd, BACKLOG); //listen if (ret <0) { printf("error in listening"); exit(1); } while (1) { printf("waiting for data\n"); sin_size = sizeof (struct sockaddr_in); con_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size); //accept the packet if (con_fd <0) { printf("error in accept\n"); exit(1); } if ((pid = fork())==0) // creat acception process { close(sockfd); str_ser(con_fd, &error_percent); //receive packet and response close(con_fd); exit(0); } else close(con_fd); //parent process } close(sockfd); exit(0); }
int main(int argc, char **argv) { int sockfd, con_fd, ret; struct sockaddr_in my_addr; struct sockaddr_in their_addr; int sin_size; int error_percentage; // char *buf; pid_t pid; if (argc != 2) { printf("Pleas input an Error Percentage following function name!\n"); exit(1); } error_percentage = atoi(argv[1]); if (error_percentage > 99 || error_percentage < 0) { printf("The range of error percentage varies between 0 to 99! Please give a reasonable value!\n"); exit(1); } sockfd = socket(AF_INET, SOCK_STREAM, 0); //create socket if (sockfd <0) { printf("error in socket!"); exit(1); } my_addr.sin_family = AF_INET; my_addr.sin_port = htons(MYTCP_PORT); my_addr.sin_addr.s_addr = htonl(INADDR_ANY);//inet_addr("172.0.0.1"); bzero(&(my_addr.sin_zero), 8); ret = bind(sockfd, (struct sockaddr *) &my_addr, sizeof(struct sockaddr)); //bind socket if (ret <0) { printf("error in binding"); exit(1); } ret = listen(sockfd, BACKLOG); //listen if (ret <0) { printf("error in listening"); exit(1); } while (1) { printf("waiting for data\n"); sin_size = sizeof (struct sockaddr_in); con_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size); //accept the packet if (con_fd <0) { printf("error in accept\n"); exit(1); } if ((pid = fork())==0) // creat acception process { close(sockfd); str_ser(con_fd, error_percentage); //receive packet and response close(con_fd); exit(0); } else close(con_fd); //parent process } close(sockfd); exit(0); }