Untitled
#include<stdio.h> #include<string.h> #include<time.h> #include<stdlib.h> #include<sys/socket.h> #include<string.h> #include<sys/types.h> #include<unistd.h> #include<arpa/inet.h> void main(){ char *ip="127.0.0.1"; int port=5555, x=0; int sockfd; struct sockaddr_in server_addr, client_addr; char buffer[1024]; socklen_t addr_size; int n; sockfd=socket(AF_INET, SOCK_DGRAM, 0); if(sockfd<0){ perror("[-] Socket error"); exit(1); } memset(&server_addr, '\0', sizeof(server_addr)); server_addr.sin_family=AF_INET; server_addr.sin_port=htons(port); server_addr.sin_addr.s_addr=inet_addr(ip); n=bind(sockfd,(struct sockaddr*) &server_addr, sizeof(server_addr)); if(n<0){ perror("[+] Bind error"); exit(1); } while(1){ bzero(buffer, 1024); addr_size=sizeof(client_addr); recvfrom(sockfd, buffer, 1024, 0,(struct sockaddr*)&client_addr, &addr_size); if(atoi(buffer)!=x) printf("Server: Received packet %s \n", buffer); else printf("Server: Received packet %s(duplicate) \n", buffer); x = atoi(buffer); // strcpy(var, buffer); sleep(1); if(rand()%2==0){ printf("Server: Sending acknowledgement from packet %s \n", buffer); sendto(sockfd, buffer, 1024, 0,(struct sockaddr*)&client_addr, sizeof(server_addr)); } } } client #include<stdio.h> #include<stdlib.h> #include<string.h> #include<sys/types.h> #include<sys/socket.h> #include<unistd.h> #include<arpa/inet.h> #include<ctype.h> #include<sys/select.h> #include<pthread.h> #define timeoutValue 5 void main(){ char *ip="127.0.0.1"; int port=5555; pthread_t timeoutThread; int sockfd; struct sockaddr_in addr; char buffer[1024]; socklen_t addr_size; sockfd = socket(AF_INET, SOCK_DGRAM, 0); if(sockfd<0){ perror("[-] Socket error"); exit(1); } memset(&addr, '\0', sizeof(addr)); addr.sin_family=AF_INET; addr.sin_port=htons(port); addr.sin_addr.s_addr=inet_addr(ip); int packetCounter = 1; while(packetCounter<=7){ bzero(buffer, 1024); sprintf(buffer, "%d", packetCounter); printf("Client : Sending Packet %s \n", buffer); sendto(sockfd, buffer, 1024, 0,(struct sockaddr*)&addr, sizeof(addr)); bzero(buffer, 1024); addr_size = sizeof(addr); struct timeval timeout; timeout.tv_usec=0; if(setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO,&timeout, sizeof(timeout))<0) printf("Error \n"); else{ bzero(buffer, 1024); addr_size = sizeof(addr); int rec= recvfrom(sockfd, buffer, 1024, 0,(struct sockaddr*)&addr, &addr_size); if(rec<0) printf("Client: Timeout Error! Sending packet again \n"); else{ printf("Client: Received acknowledgment for packet %s \n", buffer); recvfrom(sockfd, buffer, 1024, 0,(struct sockaddr*)&addr, &addr_size); printf("Client: Received acknowledgement for packet %s \n", buffer); sleep(1); packetCounter++; } } sleep(1); } }
Leave a Comment