--- RMI --- import java.net.*; import java.rmi.*; public class RmiServer{ public static void main(String args[]) throws Exception{ try{ RmiServerImpl obj = new RmiServerImpl(); Naming.rebind("s", obj); } catch (RemoteException e){ System.out.println("java RMI registry already exists."); } } } import java.rmi.*; import java.rmi.server.*; import javax.swing.*; import java.awt.event.*; import java.awt.*; public class RmiServerImpl extends UnicastRemoteObject implements RmiServerIntf{ JLabel l1; JTextArea tf; Container c; public RmiServerImpl() throws RemoteException{ display e=new display(); } public class display extends JFrame{ public display(){ c =getContentPane(); FlowLayout f=new FlowLayout(); c.setLayout(f); l1=new JLabel("Received Messages"); c.add(l1); tf=new JTextArea(15,30); c.add(tf); tf.setText(""); setVisible(true); setSize(500,500); setTitle("Server"); setDefaultCloseOperation(EXIT_ON_CLOSE); } } public void show(String str) throws RemoteException{ tf.append("\n"+str); } } import java.rmi.*; public interface RmiServerIntf extends Remote{ public void show(String str) throws RemoteException; } import java.rmi.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; public class RmiClient extends JFrame implements ActionListener{ JLabel l1; JTextField tf; JButton b1; Container c; public RmiClient(){ c =getContentPane(); FlowLayout f=new FlowLayout(); c.setLayout(f); l1=new JLabel("Message"); c.add(l1); tf=new JTextField(25); c.add(tf); b1=new JButton("Send"); c.add(b1); b1.addActionListener(this); setVisible(true); setSize(500,500); setTitle("Client"); setDefaultCloseOperation(EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent ee){ try{ String url="rmi://localhost/s"; RmiServerIntf obj = (RmiServerIntf)Naming.lookup(url); String str=tf.getText(); obj.show(str); } catch(Exception e){} } public static void main(String args[]) throws Exception{ new RmiClient(); } } -- TCP -- client import java.awt.*; import javax.swing.*; import java.io.*; import java.net.*; import java.awt.event.*; public class client2d extends JFrame implements ActionListener{ BufferedReader br; PrintWriter pw; String st,st2; JLabel l1; JTextField tf; JTextArea ta; JButton b1; Container c; Socket skt; public client2d(){ try{ skt=new Socket("localhost",8000); c =getContentPane(); FlowLayout f=new FlowLayout(); c.setLayout(f); l1=new JLabel("Message"); c.add(l1); tf=new JTextField(25); c.add(tf); ta=new JTextArea(15,15); c.add(ta); b1=new JButton("Send"); c.add(b1); b1.addActionListener(this); setVisible(true); setSize(500,275); setTitle("Client"); setDefaultCloseOperation(EXIT_ON_CLOSE); while(true){ br=new BufferedReader(new InputStreamReader(skt.getInputStream())); st2=br.readLine(); ta.append("\n"+st2); } } catch(Exception e){} } public void actionPerformed(ActionEvent ee){ try{ st=tf.getText(); pw = new PrintWriter(skt.getOutputStream(), true); pw.println(st); } catch(Exception e){} } public static void main(String args[]){ new client2d(); } } server import java.awt.*; import javax.swing.*; import java.io.*; import java.net.*; import java.awt.event.*; public class server2d extends JFrame implements ActionListener{ BufferedReader br; PrintWriter pw; String st,st2; JLabel l1; JTextField tf; JTextArea ta; JButton b1; Container c; ServerSocket ss; Socket skt; public server2d(){ try{ ss=new ServerSocket(8000); skt = ss.accept(); c =getContentPane(); FlowLayout f=new FlowLayout(); c.setLayout(f); l1=new JLabel("Message"); c.add(l1); tf=new JTextField(25); c.add(tf); ta=new JTextArea(15,15); c.add(ta); b1=new JButton("Send"); c.add(b1); b1.addActionListener(this); setVisible(true); setSize(500,275); setTitle("Server"); setDefaultCloseOperation(EXIT_ON_CLOSE); while(true){ br=new BufferedReader(new InputStreamReader(skt.getInputStream())); st2=br.readLine(); ta.append("\n"+st2); } } catch(Exception e){} } public void actionPerformed(ActionEvent ee){ try{ st=tf.getText(); pw = new PrintWriter(skt.getOutputStream(), true); pw.println(st); } catch(Exception e){} } public static void main(String args[]){ new server2d(); } } -- UDP -- server import java.awt.*; import javax.swing.*; import java.io.*; import java.net.*; import java.awt.event.*; public class udpserver extends JFrame implements ActionListener{ BufferedReader br; PrintWriter pw; String st,st2; JLabel l1; JTextField tf; JTextArea ta; JButton b1; Container c; DatagramSocket ss,cc; DatagramPacket incoming,sending; public udpserver() { try { ss=new DatagramSocket(8000); cc=new DatagramSocket(); byte [] buffer=new byte[65535]; incoming=new DatagramPacket(buffer,buffer.length); c =getContentPane(); FlowLayout f=new FlowLayout(); c.setLayout(f); l1=new JLabel("Message"); c.add(l1); tf=new JTextField(25); c.add(tf); ta=new JTextArea(15,15); c.add(ta); b1=new JButton("Send"); c.add(b1); b1.addActionListener(this); setVisible(true); setSize(500,275); setTitle("Server"); setDefaultCloseOperation(EXIT_ON_CLOSE); while(true) { ss.receive(incoming); byte[] data=incoming.getData(); st2=new String(data,0,incoming.getLength()); System.out.println(st2); ta.append("\nClient:"+st2); setDefaultCloseOperation(EXIT_ON_CLOSE); } } catch(Exception e) {} } public void actionPerformed(ActionEvent ee) { try{ st=tf.getText(); byte [] b=st.getBytes(); sending=new DatagramPacket(b,b.length,InetAddress.getLocalHost(),8001); ta.append("\nServer:"+st); cc.send(sending); tf.setText(""); } catch(Exception e) {} } public static void main(String args[]){ new udpserver(); } } client import java.awt.*; import javax.swing.*; import java.io.*; import java.net.*; import java.awt.event.*; public class udpclient extends JFrame implements ActionListener{ BufferedReader br; PrintWriter pw; String st,st2; JLabel l1; JTextField tf; JTextArea ta; JButton b1; Container c; DatagramSocket ss,cc; DatagramPacket incoming,sending; byte [] buffer; public udpclient() { try { ss=new DatagramSocket(8001); cc=new DatagramSocket(); byte[] buffer=new byte[65535]; c =getContentPane(); FlowLayout f=new FlowLayout(); c.setLayout(f); l1=new JLabel("Message"); c.add(l1); tf=new JTextField(25); c.add(tf); ta=new JTextArea(15,15); c.add(ta); b1=new JButton("Send"); c.add(b1); b1.addActionListener(this); setVisible(true); setSize(500,275); setTitle("Client"); setDefaultCloseOperation(EXIT_ON_CLOSE); while(true){ incoming=new DatagramPacket(buffer,buffer.length); ss.receive(incoming); byte[] data=incoming.getData(); st2=new String(data,0,incoming.getLength()); ta.append("\nServer: "+st2); System.out.println(st2); setDefaultCloseOperation(EXIT_ON_CLOSE); } } catch(Exception e) {} } public void actionPerformed(ActionEvent ee){ try{ InetAddress in=InetAddress.getByName("localhost"); st=tf.getText(); sending=new DatagramPacket(st.getBytes(),st.length(),InetAddress.getLocalHost(),8000); ta.append("\nClient:"+st); tf.setText(""); cc.send(sending); } catch(Exception e){} } public static void main(String args[]){ new udpclient(); } } -- MultiCast -- import java.net.*; import java.io.*; class Multicastsender implements Runnable{ static int port; static MulticastSocket ms; static String group; Multicastsender() throws Exception{ port=6789; group="224.2.2.9"; ms=new MulticastSocket(port); } public void run(){ while(true) { try{ BufferedReader br=new BufferedReader(new InputStreamReader (System.in)); byte sbuf[]=new byte[300]; sbuf=br.readLine().getBytes(); DatagramPacket spack=new DatagramPacket(sbuf,sbuf.length,InetAddress.getByName(group),port); ms.send(spack); } catch(Exception e){} } } public static void main(String args[])throws Exception{ Multicastsender sender=new Multicastsender(); Thread t= new Thread(sender); ms.joinGroup(InetAddress.getByName(group)); t.start(); int count=0; byte rbuf[]=new byte[30]; System.out.println("MULTICAST SENDER"); while(true){ DatagramPacket rpacket; rpacket=new DatagramPacket(rbuf,rbuf.length); ms.receive(rpacket); String str=new String(rpacket.getData(),0,rpacket.getLength()); if(str.equals("join")){ count++; System.out.println("Client Joined the group"); System.out.println("currently "+count+"clients in the group"); } else if(str.equals("leave")){ count--; System.out.println("Client left the group"); System.out.println("currently "+count+"clients in the group"); } if(count==0){ ms.leaveGroup(InetAddress.getByName(group)); break; } } } } reciever import java.net.*; import java.io.*; class Multicastreciever implements Runnable{ static int port; static MulticastSocket ms; static String group; public Multicastreciever() throws Exception{ port=6789; ms=new MulticastSocket(port); } public void run(){ while(true){ try{ byte rbuf[]=new byte[300]; DatagramPacket rpack=new DatagramPacket(rbuf,rbuf.length); ms.receive(rpack); String str=new String(rpack.getData(),0,rpack.getLength()); if(str.compareTo("join")!=0 && str.compareTo("leave")!=0) System.out.println(str); } catch(Exception e){} } } public static void main(String args[]) throws Exception { Multicastreciever mr=new Multicastreciever(); Thread t= new Thread(mr); String group="224.2.2.9"; System.out.println("Do you wish to join"); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); if(br.readLine().equals("yes")) { ms.joinGroup(InetAddress.getByName(group)); byte sbuf[]=new byte[30]; sbuf="join".getBytes(); DatagramPacket spack=new DatagramPacket(sbuf,sbuf.length,InetAddress.getByName(group),port); ms.send(spack); System.out.println("client joined the group"); t.start(); while(true){ String str1=br.readLine(); if(str1.equals("leave")){ byte sbuf1[]=new byte[30]; sbuf1=str1.getBytes(); DatagramPacket spack1=new DatagramPacket(sbuf1,sbuf1.length, InetAddress.getByName(group),port); ms.send(spack1); System.out.println("client left the group"); ms.leaveGroup(InetAddress.getByName(group)); break; } } } } } -- SLIDING WINDOW -- sender import java.io.*; import java.net.*; class SlidingWindowSender{ public static void main(String argv[]) throws Exception{ String msg1; String msg2; String buf[]=new String[10]; int n,sws=3,nf=0,i,b; System.out.println("SLIDING WINDOW SENDER"); Thread.sleep(1000); System.out.println("WAITING FOR RECIEVER TO START..."); ServerSocket ss = new ServerSocket(8000); Socket s = ss.accept(); System.out.println("RECIEVER STARTED."); do{ DataOutputStream op = new DataOutputStream(s.getOutputStream()); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedReader br1 = new BufferedReader(new InputStreamReader (s.getInputStream())); System.out.println("ENTER THE NUMBER OF FRAMES TO SEND"); nf=Integer.parseInt(br.readLine()); if(nf>sws){ n=sws; System.out.println("Enter frames:"); op.writeBytes(""+n + '\n'); } else{ n=nf; System.out.println("Enter frames:"); op.writeBytes(""+n + '\n'); } //System.out.println("Enter frames:"); //op.writeBytes(""+nf + '\n'); for(i=0;i