gp1server.java
gp1client1.java
Next
import
java.io.*;
import java.awt.*;
import java.rmi.*;
import java.rmi.server.*;
import java.net.*;
import java.util.*; class
gp1serwin extends javax.swing.JFrame {
String filesel,s1,s2,mst;
String[] pmes;
String[] str1=new String[10];
Random r;
File f;
public gp1serwin() {
initComponents();
}
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jPanel3 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
jPanel5 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
jLabel11 = new javax.swing.JLabel();
jLabel12 = new javax.swing.JLabel();
jLabel13 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jTextArea1 = new javax.swing.JTextArea();
jTextArea2 = new javax.swing.JTextArea();
jTextArea3 = new javax.swing.JTextArea();
jTextArea4 = new javax.swing.JTextArea();
jTextArea5 = new javax.swing.JTextArea();
jTextArea6 = new javax.swing.JTextArea();
jCheckBox1 = new javax.swing.JCheckBox();
jCheckBox2 = new javax.swing.JCheckBox();
sp1 = new javax.swing.JScrollPane();
sp2 = new javax.swing.JScrollPane();
sp3 = new javax.swing.JScrollPane();
sp4 = new javax.swing.JScrollPane();
sp5 = new javax.swing.JScrollPane();
sp6 = new javax.swing.JScrollPane();
getContentPane().setLayout(null);
jPanel1.setLayout(null);
jPanel2.setLayout(null);
jPanel3.setLayout(null);
jPanel4.setLayout(null);
jPanel5.setLayout(null);
jPanel1.setBackground(new java.awt.Color(204, 204, 255));
jPanel2.setBackground(new java.awt.Color(204, 204, 255));
jPanel3.setBackground(new java.awt.Color(204, 204, 255));
jPanel4.setBackground(new java.awt.Color(204, 204, 255));
jPanel5.setBackground(new java.awt.Color(204, 204, 255));
jCheckBox1.setBackground(new java.awt.Color(204, 204, 255));
jCheckBox2.setBackground(new java.awt.Color(204, 204, 255));
jPanel1.setBorder(new javax.swing.border.EtchedBorder());
jPanel2.setBorder(new javax.swing.border.EtchedBorder());
jPanel3.setBorder(new javax.swing.border.EtchedBorder());
jPanel4.setBorder(new javax.swing.border.EtchedBorder());
jPanel5.setBorder(new javax.swing.border.EtchedBorder());
jPanel1.setFont(new java.awt.Font("MS Sans Serif",
1, 18));
jLabel1.setFont(new java.awt.Font("MS Sans Serif",
3, 36));
jLabel2.setFont(new java.awt.Font("MS Sans Serif",
3, 24));
jLabel3.setFont(new java.awt.Font("MS Sans Serif",
3, 18));
jLabel4.setFont(new java.awt.Font("MS Sans Serif",
1, 18));
jLabel5.setFont(new java.awt.Font("MS Sans Serif",
1, 14));
jLabel6.setFont(new java.awt.Font("MS Sans Serif",
1, 14));
jLabel7.setFont(new java.awt.Font("MS Sans Serif",
1, 20));
jLabel8.setFont(new java.awt.Font("MS Sans Serif",
1, 14));
jLabel9.setFont(new java.awt.Font("MS Sans Serif",
1, 14));
jLabel10.setFont(new java.awt.Font("MS Sans Serif",
1, 14));
jLabel11.setFont(new java.awt.Font("MS Sans Serif",
1, 14));
jLabel12.setFont(new java.awt.Font("MS Sans Serif",
1, 14));
jLabel13.setFont(new java.awt.Font("MS Sans Serif",
1, 14));
jButton1.setFont(new java.awt.Font("MS Sans Serif",
1, 14));
jButton2.setFont(new java.awt.Font("MS Sans Serif",
1, 14));
jButton3.setFont(new java.awt.Font("MS Sans Serif",
1, 14));
jCheckBox1.setFont(new java.awt.Font("MS Sans Serif",
1, 18));
jCheckBox2.setFont(new java.awt.Font("MS Sans Serif",
1, 18));
jLabel1.setText("Group-Aided Reliable Multicasting");
jLabel2.setText("Group1");
jLabel3.setText("Receive the Source");
jLabel4.setText("Select Other Group");
jLabel5.setText("Destinations");
jLabel6.setText("Node1");
jLabel7.setText("Flow of Packets");
jLabel8.setText("Node2");
//jLabel9.setText("With Ack");
jLabel10.setText("Group2");
//jLabel11.setText("With Ack");
jLabel12.setText("Group3");
//jLabel13.setText("With Ack");
jButton1.setText("Select Source");
jButton2.setText("Receive");
jButton3.setText("Send");
jCheckBox1.setText("Group3");
jCheckBox2.setText("Group2");
jPanel1.setBounds(-20, 0, 820, 600);
jPanel2.setBounds(470, 120, 340, 140);
jPanel3.setBounds(30, 200, 410, 50);
jPanel4.setBounds(20, 120, 440, 140);
jPanel5.setBounds(20, 300, 790, 260);
jLabel1.setBounds(170, 20, 630, 40);
jLabel2.setBounds(400, 70, 90, 30);
jLabel3.setBounds(100, 10, 170, 30);
jLabel4.setBounds(10, 10, 180, 30);
jLabel5.setBounds(50, 310, 140, 20);
jLabel6.setBounds(200, 310, 150, 20);
jLabel7.setBounds(400, 280, 200, 19);
jLabel8.setBounds(350, 310, 150, 20);
jLabel9.setBounds(330, 330, 100, 19);
jLabel10.setBounds(500, 310, 210, 19);
jLabel11.setBounds(500, 330, 90, 19);
jLabel12.setBounds(680, 310, 170, 19);
jLabel13.setBounds(680, 330, 70, 19);
jCheckBox1.setBounds(300, 10, 90, 30);
jCheckBox2.setBounds(190, 10, 90, 30);
jButton1.setBounds(225, 150, 140, 30);
jButton2.setBounds(230, 70, 100, 30);
jButton3.setBounds(370, 150, 70, 30);
jTextField1.setBounds(30, 150, 190, 30);
jTextField2.setBounds(20, 70, 200, 30);
sp1.setBounds(50, 350, 110, 190);
sp2.setBounds(200, 350, 110, 190);
sp3.setBounds(350, 350, 110, 190);
sp5.setBounds(500, 350, 110, 190);
sp6.setBounds(650, 350, 110, 190);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt)
{
exitForm(evt);
}
});
jButton1.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
jButton1ActionPerformed(evt);
}
});
jButton2.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
jButton2ActionPerformed(evt);
}
});
jButton3.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
jButton3ActionPerformed(evt);
}
});
jCheckBox2.addChangeListener(new javax.swing.event.ChangeListener()
{
public void stateChanged(javax.swing.event.ChangeEvent evt)
{
jCheckBox2StateChanged(evt);
}
});
sp1.getViewport().add(jTextArea1, null);
sp2.getViewport().add(jTextArea2, null);
sp3.getViewport().add(jTextArea3, null);
sp5.getViewport().add(jTextArea5, null);
sp6.getViewport().add(jTextArea6, null);
jTextArea1.setEditable(false);
jTextArea2.setEditable(false);
jTextArea3.setEditable(false);
jTextArea5.setEditable(false);
jTextArea6.setEditable(false);
jPanel1.add(jLabel1);
jPanel1.add(jLabel2);
jPanel1.add(jLabel5);
jPanel1.add(jLabel6);
jPanel1.add(jLabel7);
jPanel1.add(jLabel8);
jPanel1.add(jLabel9);
jPanel1.add(jLabel10);
jPanel1.add(jLabel11);
jPanel1.add(jLabel12);
jPanel1.add(jLabel13);
jPanel1.add(jButton1);
jPanel1.add(jButton3);
jPanel1.add(jTextField1);
jPanel1.add(jPanel2);
jPanel1.add(jPanel3);
jPanel1.add(jPanel4);
// jPanel1.add(jPanel5);
jPanel2.add(jButton2);
jPanel2.add(jLabel3);
jPanel2.add(jTextField2);
jPanel3.add(jLabel4);
jPanel3.add(jCheckBox1);
jPanel3.add(jCheckBox2);
jPanel1.add(sp1,null);
jPanel1.add(sp2,null);
jPanel1.add(sp3,null);
jPanel1.add(sp5,null);
jPanel1.add(sp6,null);
getContentPane().add(jPanel1);
pack();
}
private void jCheckBox2StateChanged(javax.swing.event.ChangeEvent
evt) {
// TODO add your handling code here:
}
private
void jButton1ActionPerformed(java.awt.event.ActionEvent
evt)
{
FileDialog fd1=new FileDialog(this,"OPEN",FileDialog.LOAD);
fd1.setVisible(true);
filesel=fd1.getDirectory()+fd1.getFile();
jTextField1.setText(filesel);
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent
evt)
{
String file,dir,path,ms;
int mp;
byte b1[];
FileDialog fd2=new FileDialog(this,"SAVE",FileDialog.SAVE);
fd2.setVisible(true);
file=fd2.getFile();
dir=fd2.getDirectory();
path=dir+file;
jTextField2.setText(path);
try
{
FileOutputStream fos=new FileOutputStream(path);
for(int k=0;k<=7;k++)
{
b1=str1[k].getBytes();
fos.write(b1);
}
}catch(Exception e){}
}
private
void jButton3ActionPerformed(java.awt.event.ActionEvent
evt)
{
f=new File(filesel);
String st;
try
{
int sz;
byte[] buffer;
pmes=new String[10];
r =new Random();
FileInputStream fin=new FileInputStream(filesel);
sz=fin.available()/7;
buffer=new byte[sz];
int m=r.nextInt(7);
for(int i=0;i<=7;i++)
{
fin.read(buffer);
st=new String(buffer);
pmes[i]=st;
//System.out.println(pmes[i]);
if(i==m)
{
mst=pmes[i];
pmes[i]=null;
}
}
jTextArea1.append("localhost/Node1");
jTextArea1.append("\n");
jTextArea1.append("localhost/Node2");
jTextArea1.append("\n");
new cc1(pmes);
new cc2(pmes);
if(jCheckBox2.isSelected()==true)
{
jTextArea1.append("localhost/group2");
new grp2(pmes);
}
if(jCheckBox1.isSelected()==true)
{
jTextArea1.append("localhost/group3");
new grp3(pmes);
}
}catch(Exception e){}
}
private void exitForm(java.awt.event.WindowEvent evt) {
System.exit(0);
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JCheckBox jCheckBox1;
private javax.swing.JCheckBox jCheckBox2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
public javax.swing.JTextArea jTextArea1;
public javax.swing.JTextArea jTextArea2;
public javax.swing.JTextArea jTextArea3;
public javax.swing.JTextArea jTextArea4;
public javax.swing.JTextArea jTextArea5;
public javax.swing.JTextArea jTextArea6;
public javax.swing.JTextField jTextField1;
public javax.swing.JTextField jTextField2;
private javax.swing.JScrollPane sp1;
private javax.swing.JScrollPane sp2;
private javax.swing.JScrollPane sp3;
private javax.swing.JScrollPane sp4;
private javax.swing.JScrollPane sp5;
private javax.swing.JScrollPane sp6;
// End of variables declaration
}
public
class gp1server extends UnicastRemoteObject implements grpinter
{
String[] str=new String[10];
grpinter gi4;
static gp1serwin gp1s;
public gp1server() throws RemoteException
{
}
public void getfile(String[] s,String sname)
{
try
{
String ms,gs4;
int j=0;
if(sname.equals("gp1client1"))
{
gs4="rmi://localhost/gp1client1";
gi4=(grpinter)Naming.lookup(gs4);
}
if(sname.equals("gp1client2"))
{
gs4="rmi://localhost/gp1client2";
gi4=(grpinter)Naming.lookup(gs4);
}
if(sname.equals("gp2server"))
{
gs4="rmi://localhost/gp2server";
gi4=(grpinter)Naming.lookup(gs4);
}
if(sname.equals("gp3server"))
{
gs4="rmi://localhost/gp3server";
gi4=(grpinter)Naming.lookup(gs4);
}
for(int i=0;i<=7;i++)
{
if(s[i] !=null)
{
gi4.pack(i,"gp1server");
try
{
Thread.sleep(500);
}catch(Exception e){}
}
else
{
j=i;
gi4.nack(i,"gp1server");
}
}
s[j]=gi4.mpackno(j);
gi4.pack(j,"gp1server");
gp1s.str1=s;
}catch(Exception e){}
}
public String mpackno(int m) throws RemoteException
{
//System.out.println("Value of m is"+ m);
//System.out.println("Missed String is"+gp1s.mst);
return gp1s.mst;
}
public void pack(int i,String name) throws RemoteException
{
if(name.equals("gp1client1"))
{
gp1s. jTextArea2.append("Packet["+i+"]:PACK");
gp1s. jTextArea2.append("\n");
}
if(name.equals("gp1client2"))
{
gp1s. jTextArea3.append("Packet["+i+"]:PACK");
gp1s. jTextArea3.append("\n");
}
if(name.equals("gp2server"))
{
//System.out.println("Call from server2");
gp1s. jTextArea5.append("Packet["+i+"]:PACK");
gp1s. jTextArea5.append("\n");
}
if(name.equals("gp3server"))
{
gp1s. jTextArea6.append("Packet["+i+"]:PACK");
gp1s. jTextArea6.append("\n");
}
/*try
{
Thread.sleep(500);
}catch(Exception e){}*/
}
public
void nack(int i,String name1) throws RemoteException
{
if(name1.equals("gp1client1"))
{
gp1s. jTextArea2.append("Packet["+i+"]:NACK");
gp1s. jTextArea2.append("\n");
}
if(name1.equals("gpclient2"))
{
gp1s. jTextArea3.append("Packet["+i+"]:NACK");
gp1s. jTextArea3.append("\n");
}
if(name1.equals("gp2server"))
{
gp1s. jTextArea4.append("Packet["+i+"]:NACK");
gp1s. jTextArea4.append("\n");
}
if(name1.equals("gp3server"))
{
gp1s. jTextArea6.append("Packet["+i+"]:NACK");
gp1s. jTextArea6.append("\n");
}
}
public static void main(String args[])
{
try
{
gp1server s1=new gp1server();
Naming.rebind("gp1server",s1);
}catch(Exception e){}
gp1s=new gp1serwin();
gp1s.setSize(800,600);
gp1s.setResizable(false);
gp1s.setTitle("Group-Aided Reliable Multicasting");
//gp1s.r1ta.append("good");
gp1s.show();
}
}
class
cc1 extends Thread
{
String[] pmes=new String[10];
String s1;
Thread t;
cc1(String[] ps)
{
//System.out.println("Client2");
this.pmes=ps;
t=new Thread(this,"cc1");
t.start();
}
public void run()
{
//System.out.println("Run method is clalled");
s1="rmi://localhost/gp1client1";
try
{
//System.out.println("With in run method");
grpinter gc1=(grpinter)Naming.lookup(s1);
gc1.getfile(pmes,"gp1server");
//System.out.println("Get file for client1 is called");
t.sleep(2500);
}catch(Exception e){}
}
}
class
cc2 extends Thread
{
String[] pmes=new String[10];
String s2;
Thread t1;
cc2(String[] ps)
{
//System.out.println("Client1");
this.pmes=ps;
t1=new Thread(this,"cc2");
t1.start();
}
public void run()
{
s2="rmi://localhost/gp1client2";
try
{
grpinter gc2=(grpinter)Naming.lookup(s2);
gc2.getfile(pmes,"gp1server");
//System.out.println("Get file called for client2");
t1.sleep(3500);
}catch(Exception e){}
}
}
class
grp2 extends Thread
{
String[] pmes=new String[10];
String s2;
Thread t1;
grp2(String[] ps)
{
//System.out.println("coming to group2");
this.pmes=ps;
t1=new Thread(this,"grp2");
t1.start();
}
public void run()
{
s2="rmi://localhost/gp2server";
try
{
grpinter gc2=(grpinter)Naming.lookup(s2);
gc2.getfile(pmes,"gp1server");
//System.out.println("Get file called for gp1server");
t1.sleep(3500);
}catch(Exception e){}
}
}
class
grp3 extends Thread
{
String[] pmes=new String[10];
String s2;
Thread t1;
grp3(String[] ps)
{
//System.out.println("Client1");
this.pmes=ps;
t1=new Thread(this,"grp3");
t1.start();
}
public void run()
{
s2="rmi://localhost/gp3server";
try
{
grpinter gc2=(grpinter)Naming.lookup(s2);
gc2.getfile(pmes,"gp1server");
//System.out.println("Get file called for client2");
t1.sleep(3500);
}catch(Exception e){}
}
}
|