Untitled

 avatar
unknown
plain_text
19 days ago
2.8 kB
3
Indexable
#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