OneCompiler

udp server

162

//CS20B1024 Sankethraj Kotagond

#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>

int main()
{
int s_sock, num, otp[4], verify_otp[4];
char phone_num[256];
s_sock=socket(AF_INET,SOCK_DGRAM,0);
struct sockaddr_in server, other;
server.sin_family=AF_INET;
server.sin_port=htons(9001);
server.sin_addr.s_addr=INADDR_ANY;
socklen_t add;
bind(s_sock,(struct sockaddr*)&server,sizeof(server));
add=sizeof(other);
recvfrom(s_sock,phone_num,sizeof(phone_num),0,(struct sockaddr*)&other,&add);
printf("Phone number received: %s",phone_num);

num = rand() % 10000 + 1;
for(int i=0;i<4;i++)
{
	otp[i]=num%10;
	num=num/10;
}

sendto(s_sock,otp,sizeof(otp),0,(struct sockaddr*)&other,sizeof(other));
printf("\n\nOTP sent:\n");
for(int i=0;i<4;i++)
{
	printf("%d", otp[i]);		
}
printf("\n");

recvfrom(s_sock,verify_otp,sizeof(verify_otp),0,(struct sockaddr*)&other,&add);

char check[1];

for(int i=0;i<4;i++)
{
	if(verify_otp[i] == otp[i])
	{
		check[0] = '1';
	}
	else
	{
		check[0] = '0';
	}
}

if(check[0] == '1')
{
	printf("\n\nOTP Verified successfully!");
}
else
{
	printf("\n\nOTP is wrong!");
}

sendto(s_sock,check,sizeof(check),0,(struct sockaddr*)&other,sizeof(other));



return 0;

}