Untitled
unknown
plain_text
a year ago
2.8 kB
7
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);
}
}Editor is loading...
Leave a Comment