Skip to main content

ARP/RARP full simulation program

server.c

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "sys/types.h"
#include "sys/socket.h"
#include "arpa/inet.h"
#include "netinet/in.h"
#define SA struct sockaddr

struct IPmac {
			 char ip[100];
			 char mac[100];
	   };


int main() {
	   int sockfd,len,i;
	   struct sockaddr_in servaddr;
	   char buff[30],temp[30],ip[30],mac[30];
	   int flag=0;

	   struct IPmac in[3]={ 
			 {"10.1.1.8","44:dd:22:11:33"},
			 {"127.0.0.1","33:aa:fe:4e:2d"},
			 {"10.1.8.5","23:a3:5d:33:9d"}
	    };

	   //printing table
	   printf("ip\t\tmac\n");
	   for(i=0;i<3;i++) 
	   {
			 printf("%s\t%s\n",in[i].ip,in[i].mac);
	   }

	   //create socket
	   sockfd = socket(AF_INET,SOCK_DGRAM,0);

	   //fill structure
	   servaddr.sin_family = AF_INET;
	   servaddr.sin_port = htons(9999);
	   servaddr.sin_addr.s_addr = INADDR_ANY;

	   //bind
	   bind(sockfd,(SA*)&servaddr,sizeof(servaddr));

	   //get ip from client
	   len=sizeof(servaddr);
	   recvfrom(sockfd,ip,sizeof(ip),0,(SA*)&servaddr,&len);

	   for(i=0;i<strlen(ip)-1;i++) {
			 temp[i]=ip[i];
	   }
	   temp[i]='\0';
	   printf("received IP :%s\n",temp);

	   //searching in table for equivalent mac
	   for(i=0;i<3;i++) {
			 if(strcmp(temp,in[i].ip)==0) {
				    strcpy(mac,in[i].mac);
				    break;
			 }
	   }

	   printf("mac address is %s\n",mac);
	   sendto(sockfd,mac,sizeof(mac),0,(SA*)&servaddr,len);

	   //rarp simulation
	   //recv mac address
	   bzero(mac,sizeof(mac));
	   recvfrom(sockfd,mac,sizeof(mac),0,(SA*)&servaddr,&len);
	   printf("received mac address :%s",mac);
	   //store in temp
	   bzero(temp,sizeof(temp));
	   for(i=0;i<strlen(mac)-1;i++) {
			 temp[i]=mac[i];
	   }
	   temp[i]='\0';
	   bzero(ip,sizeof(ip));

	   //check in table
	   for(i=0;i<3;i++) {
			 if(strcmp(temp,in[i].mac)==0) {
				    strcpy(ip,in[i].ip);
				    break;
			 }
	   }
	   printf("ip address :%s\n",ip);
	   sendto(sockfd,ip,sizeof(ip),0,(SA*)&servaddr,len);
	   return 0;
}


client.c

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "sys/types.h"
#include "sys/socket.h"
#include "arpa/inet.h"
#include "netinet/in.h"
#define SA struct sockaddr

int main() {
	   int sockfd,len;
	   char ip[30],mac[30];
	   struct sockaddr_in servaddr;

	   //creating socket
	   sockfd = socket(AF_INET,SOCK_DGRAM,0);

	   //fill structure
	   servaddr.sin_family = AF_INET;
	   servaddr.sin_port = htons(9999);
	   servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");

	   //send ip address
	   printf("ARP SIMULATION\n");
	   printf("enter ip address :");
	   fgets(ip,sizeof(ip),stdin);
	   sendto(sockfd,ip,sizeof(ip),0,(SA*)&servaddr,sizeof(servaddr));
	   len=sizeof(servaddr);
	   recvfrom(sockfd,mac,sizeof(mac),0,(SA*)&servaddr,&len);
	   printf("MAC address is: %s\n",mac);

	   printf("RARP simulation\n");
	   printf("enter mac address :");
	   bzero(mac,sizeof(mac));
	   fgets(mac,sizeof(mac),stdin);
	   sendto(sockfd,mac,sizeof(mac),0,(SA*)&servaddr,len);
	   recvfrom(sockfd,ip,sizeof(ip),0,(SA*)&servaddr,&len);
	   printf("IP address is: %s\n",ip);

	   return 0;
}

Comments

Post a Comment

Popular posts from this blog

ரிதம்பாக்ஸில் ரேடியோ மிர்ச்சி

உபுண்டு 12.04ல் bansheeயை தூக்கிவிட்டு மறுபடியும் rhythmbox default இசைப்பானாக இடம்பெற்றுள்ளது. ரிதம்பாக்ஸ்ல் bansheeயை விட பல அம்சங்கள் குறைவுதான். ஏன் banshee ஐ எடுத்தார்கள் என்று  சரியாக புரியவில்லை. என்னதான் high-bitrateல் பாடல்கள் இருந்தாலும் fm கேட்பது ஒரு மகிழ்ச்சிதான். சில வருடங்களுக்கு முன்பு எங்கள் தெருக்களில் சூரியன் fm, ரேடியோ மிர்ச்சி போன்றவை தான் என்னை எழுப்பும்.

need your response

It has been a long time... my rest hours are reduced i only sleep for 5 to 6 hours a day.. so i can't post frequently.. sorry friends.. my university is a good place to refine myself. yes..! thoughts about my programming computers are refined there.. i always wanted share my experience.. but i feared of thinking that it will helpful for you or not.. most of us don't like to hear stories of others. so i stopped blogging and of course having less time.. i have earned some good friends there... who are interested in open-source technology.. very few of us only know the linux platform.. this semester mini project also in open softwares like mysql, postgrey sql i will start blogging my experience if you are interested.. regards, Mani G

உபுண்டு டெர்மினலில் இருந்து இலவசமாக sms அனுப்பலாம்

இன்று டெர்மினலில் இருந்து எப்படி இலவசமாக sms அனுப்புவது என்று பார்க்கலாம். way2sms சென்று sms அனுப்புவதற்கு அந்த தளத்தின் விளம்பரங்களை தாண்டிதான் அனுப்ப வேண்டியிருக்கிறது. விளம்பரங்களை பார்க்கமால் சுலபமாக இந்த script ஐ பயன்படுத்தி இலவசமாக sms அனுப்பலாம். இதற்கு முதலில் way2sms ன் பயனராக இருக்க வேண்டும். இல்லை என்றால way2sms.com சென்று ஒரு அக்கவுண்டினை தொடங்கிகொள்ளவும். username, password  வேண்டும்.