Exp# 5C ARP Client/Server: CS2307 - Network Lab Socket Programming

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

CS2307 Network Lab

Exp# 5C

Socket Programming

ARP Client/Server

Aim
To know the physical address of a host when its logical address is known using ARP
protocol.

Algorithm
Target/Server
1.
2.
3.
4.
5.
6.

Create a server socket.


Accept client connection.
Read IP address from the client request
Check its configuration file and compare with its logical address.
If there is a match, send the host physical address.
Stop

Client
1.
2.
3.
4.
5.
6.

Create a socket.
Send IP address to the target machine
Receive target's response
If it is a MAC address then display it and go to step 6
Display "Host not found"
Stop

Result
Thus using ARP protoocl MAC address is obtained.

http://cseannauniv.blogspot.com

Vijai Anand

CS2307 Network Lab

Socket Programming

Program
//ARP Server -- arpserver.java
import java.io.*;
import java.net.*;
class arpserver
{
public static void main(String args[])throws IOException
{
try
{
ServerSocket soc = new ServerSocket(2500);
System.out.println("Server started");
Socket client = null;
client = soc.accept();
String str;
PrintStream ps = new
PrintStream(client.getOutputStream());
BufferedReader br = new BufferedReader(new
InputStreamReader(client.getInputStream()));
Runtime r = Runtime.getRuntime();
Process p = r.exec("ifconfig eth0");
BufferedReader pin=new BufferedReader(new
InputStreamReader(p.getInputStream()));
String haddr = "";
String ipaddr = br.readLine();
int flag = 0;
while((str = pin.readLine())!=null)
{
System.out.println(str);
if((str.indexOf("HWaddr")) != -1)
{
int tlen = str.length();
int hlen = tlen - 19;
haddr = str.substring(hlen,tlen);
}
else if ((str.indexOf(ipaddr)) != -1)
{
flag = 1;
}
}
if (flag == 1)
ps.println(haddr);
ps.close();
br.close();
pin.close();
client.close();

http://cseannauniv.blogspot.com

Vijai Anand

CS2307 Network Lab

Socket Programming

soc.close();
}
catch(IOException io)
{
System.err.println("Exception : " + io.toString());
}
}
}

//ARP Client -- arpclient.java


import java.io.*;
import java.net.*;
class arpclient
{
public static void main(String args[])
{
try
{
Socket client = new Socket("localhost", 2500);
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
PrintStream ps = new
PrintStream(client.getOutputStream());
String ipaddr,haddr = null;
BufferedReader sin = new BufferedReader(new
InputStreamReader(client.getInputStream()));
System.out.print("Enter the IP address : ");
ipaddr = br.readLine();
ps.println(ipaddr);
haddr = sin.readLine();
if (haddr == null)
System.out.println("Host does not exist");
else
System.out.println("Physical Address " + haddr);
ps.close();
br.close();
client.close();
}
catch(IOException io)
{
System.err.println(io.toString());
}
}
}

http://cseannauniv.blogspot.com

Vijai Anand

CS2307 Network Lab

Socket Programming

Output

Server
$ javac arpserver.java
$ java arpserver
Server started
eth0

Link encap:Ethernet HWaddr B8:AC:6F:1B:AB:06


inet addr:172.16.6.21 Bcast:172.255.255.255 Mask:255.0.0.0
inet6 addr: fe80::baac:6fff:fe1b:ab06/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:450 errors:0 dropped:0 overruns:0 frame:0
TX packets:127 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:48118 (46.9 KiB) TX bytes:21025 (20.5 KiB)
Interrupt:16

Client
$ javac arpclient.java
$ java arpclient
Enter the IP address : 172.16.6.21
Physical Address B8:AC:6F:1B:AB:06

http://cseannauniv.blogspot.com

Vijai Anand

You might also like