exp 2 import java.io.*; import java.net.URL; public class downlaod{ public static void main(String[] args) throws Exception { try{ String filename="sample.html"; String website="https://ssmiet.ac.in/"; URL url=new URL(website); System.out.println("the web file is downloading "+ website); InputStream inputStream=url.openStream(); OutputStream outputStream= new FileOutputStream(filename); byte[] buffer=new byte[2048]; int length=0; while ((length=inputStream.read(buffer)) != -1){ System.out.println("The buffer lenght" + length); outputStream.write(buffer,0, length); } inputStream.close(); outputStream.close(); } catch( Exception e){ System.out.println("Exception" + e.getMessage()); } } } Ex 3a client.java import java.io.DataInputStream; import java.io.IOException; import java.io.PrintStream; import java.net.InetAddress; import java.net.Socket; public class Client { public static void main(String[] args) { Socket sock = null; try { System.out.println("Trying to connect..."); sock = new Socket(InetAddress.getLocalHost(), Server.PORT); PrintStream ps = new PrintStream(sock.getOutputStream()); ps.println("Hi from client"); DataInputStream dis = new DataInputStream(sock.getInputStream()); System.out.println("Server says: " + dis.readLine()); ps.close(); dis.close(); } catch (IOException e) { System.out.println("Connection Error: " + e.getMessage()); } finally { try { if (sock != null) sock.close(); } catch (IOException ie) { System.out.println("Close Error: " + ie.getMessage()); } } } } server.java import java.io.DataInputStream; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; public class Server { public static final int PORT = 4000; public static void main(String[] args) { ServerSocket sersock = null; Socket sock = null; try { sersock = new ServerSocket(PORT); System.out.println("Server started on: " + sersock); sock = sersock.accept(); System.out.println("Client connected: " + sock); DataInputStream ins = new DataInputStream(sock.getInputStream()); String msg = ins.readLine(); System.out.println("Client says: " + msg); PrintStream ios = new PrintStream(sock.getOutputStream()); ios.println("Hello from server"); ios.close(); sock.close(); sersock.close(); } catch (Exception e) { System.out.println("Server error: " + e.getMessage()); } } } EX3b chatserver import java.io.*; import java.net.*; class TopChatServer { public static void main(String args[]) throws Exception { PrintWriter toclient; BufferedReader fromuser, fromclient; try { ServerSocket srv = new ServerSocket(4000); System.out.println("Server started"); Socket clt = srv.accept(); System.out.println("Client connected"); toclient = new PrintWriter( new BufferedWriter( new OutputStreamWriter(clt.getOutputStream())), true); fromclient = new BufferedReader( new InputStreamReader(clt.getInputStream())); fromuser = new BufferedReader( new InputStreamReader(System.in)); String cltmsg, srvmsg; while (true) { cltmsg = fromclient.readLine(); if (cltmsg == null || cltmsg.equalsIgnoreCase("end")) break; System.out.println("Client: " + cltmsg); System.out.print("Server: "); srvmsg = fromuser.readLine(); toclient.println(srvmsg); } System.out.println("Client Disconnected"); fromclient.close(); toclient.close(); fromuser.close(); clt.close(); srv.close(); } catch (Exception e) { System.out.println(e.getMessage()); } } } chatclient import java.io.*; import java.net.*; class TpcChatClient { public static void main(String args[]) throws Exception { Socket clt; PrintWriter toserver; try { BufferedReader fromuser, fromserver; clt = new Socket(InetAddress.getLocalHost(), 4000); toserver = new PrintWriter( new BufferedWriter( new OutputStreamWriter(clt.getOutputStream())), true); fromserver = new BufferedReader( new InputStreamReader(clt.getInputStream())); fromuser = new BufferedReader( new InputStreamReader(System.in)); String cltmsg, srvmsg; System.out.println("Type \"end\" to quit"); while (true) { System.out.print("Message to server: "); cltmsg = fromuser.readLine(); if (cltmsg.equalsIgnoreCase("end")) break; toserver.println(cltmsg); srvmsg = fromserver.readLine(); System.out.println("Server: " + srvmsg); } clt.close(); toserver.close(); fromserver.close(); fromuser.close(); } catch (Exception e) { System.out.println(e.getMessage()); } } } Ex 6a dnsserver.java import java.net.*; public class DNSServer { public static void main(String[] args) throws Exception { DatagramSocket ds = new DatagramSocket(5000); byte[] recv = new byte[1024]; byte[] send; System.out.println("DNS Server running..."); while (true) { DatagramPacket dp = new DatagramPacket(recv, recv.length); ds.receive(dp); String domain = new String(dp.getData(), 0, dp.getLength()); String ip; if (domain.equals("google.com")) ip = "8.8.8.8"; else if (domain.equals("yahoo.com")) ip = "98.137.11.164"; else ip = "Domain Not Found"; send = ip.getBytes(); DatagramPacket sp = new DatagramPacket(send, send.length, dp.getAddress(), dp.getPort()); ds.send(sp); } } } dnsclient .java import java.net.*; import java.io.*; public class DNSClient { public static void main(String[] args) throws Exception { DatagramSocket ds = new DatagramSocket(); InetAddress ip = InetAddress.getByName("127.0.0.1"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter domain: "); String domain = br.readLine(); byte[] send = domain.getBytes(); byte[] recv = new byte[1024]; DatagramPacket sp = new DatagramPacket(send, send.length, ip, 5000); ds.send(sp); DatagramPacket rp = new DatagramPacket(recv, recv.length); ds.receive(rp); String result = new String(rp.getData(), 0, rp.getLength()); System.out.println("IP Address: " + result); ds.close(); } } ex 6a arpserver.java import java.net.*; import java.io.*; import java.util.*; public class ArpServer { public static void main(String[] args) throws Exception { HashMap arpTable = new HashMap<>(); arpTable.put("192.168.1.1", "00-A0-C9-14-C8-29"); arpTable.put("192.168.1.2", "00-A0-C9-14-C8-30"); arpTable.put("192.168.1.3", "00-A0-C9-14-C8-31"); ServerSocket ss = new ServerSocket(5000); System.out.println("ARP Server Running..."); Socket s = ss.accept(); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter out = new PrintWriter(s.getOutputStream(), true); String ip = in.readLine(); String mac; if (arpTable.containsKey(ip)) mac = arpTable.get(ip); else mac = "MAC Address Not Found"; out.println(mac); s.close(); ss.close(); } } arpclient.java import java.net.*; import java.io.*; public class ArpClient { public static void main(String[] args) throws Exception { Socket s = new Socket("127.0.0.1", 5000); BufferedReader user = new BufferedReader(new InputStreamReader(System.in)); PrintWriter out = new PrintWriter(s.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); System.out.print("Enter IP Address: "); String ip = user.readLine(); out.println(ip); String mac = in.readLine(); System.out.println("MAC Address: " + mac); s.close(); } } ex 6b rarpserver.java import java.net.*; import java.io.*; import java.util.*; public class RarpServer { public static void main(String[] args) throws Exception { HashMap rarpTable = new HashMap<>(); rarpTable.put("00-A0-C9-14-C8-29", "192.168.1.1"); rarpTable.put("00-A0-C9-14-C8-30", "192.168.1.2"); rarpTable.put("00-A0-C9-14-C8-31", "192.168.1.3"); ServerSocket ss = new ServerSocket(6000); System.out.println("RARP Server Running..."); Socket s = ss.accept(); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter out = new PrintWriter(s.getOutputStream(), true); String mac = in.readLine(); String ip; if (rarpTable.containsKey(mac)) ip = rarpTable.get(mac); else ip = "IP Address Not Found"; out.println(ip); s.close(); ss.close(); } } rarpclient.java import java.net.*; import java.io.*; public class RarpClient { public static void main(String[] args) throws Exception { Socket s = new Socket("127.0.0.1", 6000); BufferedReader user = new BufferedReader(new InputStreamReader(System.in)); PrintWriter out = new PrintWriter(s.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); System.out.print("Enter MAC Address: "); String mac = user.readLine(); out.println(mac); String ip = in.readLine(); System.out.println("IP Address: " + ip); s.close(); } } ex 9 disattn vector.java import java.util.*; public class DistanceVector { public static void main(String[] args) { int INF = 999; int n = 4; int cost[][] = { {0, 1, 3, INF}, {1, 0, 1, 4}, {3, 1, 0, 2}, {INF, 4, 2, 0} }; int dist[][] = new int[n][n]; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) dist[i][j] = cost[i][j]; boolean changed = true; while (changed) { changed = false; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { for (int k = 0; k < n; k++) { if (dist[i][j] > cost[i][k] + dist[k][j]) { dist[i][j] = cost[i][k] + dist[k][j]; changed = true; } } } } } System.out.println("Distance Vector Routing Table"); for (int i = 0; i < n; i++) { System.out.print("Node " + i + ": "); for (int j = 0; j < n; j++) System.out.print(dist[i][j] + " "); System.out.println(); } } } linel.java import java.util.*; public class LinkState { public static void main(String[] args) { int INF = 999; int n = 5; int graph[][] = { {0, 2, INF, 1, INF}, {2, 0, 3, 2, INF}, {INF, 3, 0, 4, 5}, {1, 2, 4, 0, 3}, {INF, INF, 5, 3, 0} }; int src = 0; int dist[] = new int[n]; boolean vis[] = new boolean[n]; for (int i = 0; i < n; i++) dist[i] = graph[src][i]; vis[src] = true; dist[src] = 0; for (int c = 1; c < n; c++) { int u = -1, min = INF; for (int i = 0; i < n; i++) if (!vis[i] && dist[i] < min) { min = dist[i]; u = i; } vis[u] = true; for (int v = 0; v < n; v++) if (!vis[v] && graph[u][v] + dist[u] < dist[v]) dist[v] = graph[u][v] + dist[u]; } System.out.println("Link State Routing Table (Source = 0)"); for (int i = 0; i < n; i++) System.out.println("Distance to " + i + " = " + dist[i]); } } exp 10 import java.util.*; public class SimpleCRC { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("Enter Data Bits: "); String data = sc.nextLine(); System.out.print("Enter Divisor: "); String divisor = sc.nextLine(); int n = divisor.length() - 1; String appended = data + "0".repeat(n); String remainder = getRemainder(appended, divisor); String codeword = data + remainder; System.out.println("Remainder: " + remainder); System.out.println("Transmitted Codeword: " + codeword); System.out.print("Enter Received Codeword: "); String recv = sc.nextLine(); String check = getRemainder(recv, divisor); if (check.equals("0".repeat(n))) System.out.println("No Error Detected"); else System.out.println("Error Detected"); } public static String getRemainder(String dividend, String divisor) { int m = divisor.length(); String temp = dividend.substring(0, m); for (int i = m; i < dividend.length(); i++) { if (temp.charAt(0) == '1') temp = xor(temp, divisor) + dividend.charAt(i); else temp = xor(temp, "0".repeat(m)) + dividend.charAt(i); } if (temp.charAt(0) == '1') temp = xor(temp, divisor); else temp = xor(temp, "0".repeat(m)); return temp.substring(1); } public static String xor(String a, String b) { String result = ""; for (int i = 0; i < a.length(); i++) { result += (a.charAt(i) == b.charAt(i)) ? '0' : '1'; } return result; } }