Ring Token Algorithm Implementation Introduction
These project is divided into two parts namely Server and Client. I refer client as NODE. As this ’
is first prototype I have hard-wired the server side code. Let s dive into to java coading ChatServer.java package server; /** * @owner jalpAn * */ import java.awt.BorderLayout; java.awt.BorderLayout; import java.awt.GridLayout; java.awt.GridLayout; import java.io.*; import java.util.*; import java.net.*; import javax.swing.JFrame; javax.swing.JFrame; import javax.swing.JLabel; javax.swing.JLabel; import javax.swing.JPanel; javax.swing.JPanel; import javax.swing.JTextArea; javax.swing.JTextArea; public class ChatServer ChatServer extends JFrame { public static final int PORT PORT = 3990; ArrayList ArrayList clients = new ArrayList(); ArrayList(); public void process() process() throws Exception Exception { ServerSocket server = new ServerSocket(PORT); ServerSocket(PORT); System.out.println("server System.out.println("server is online"); while (true) { Socket client = server.accept(); HandleClient c = new HandleClient(client); clients.add(c); } } public static void main(String[] main(String[] args) throws throws Exception { ChatServer c = new ChatServer(); ChatServer(); c.buildInterface(); c.process(); } JFrame main; JTextArea iTxt;
Code is copyrighted by jalpAn by jalpAn randeRi
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
JTextArea oTxt; JLabel chek1 = new JLabel("Down"); JLabel chek2 = new JLabel("Down"); JLabel chek3 = new JLabel("Down"); JLabel chek4 = new JLabel("Down"); JLabel chek5 = new JLabel("Down"); public void buildInterface() buildInterface() { main = new JFrame("Server JFrame("Server Dashboard"); main.setAlwaysOnTop(true); BorderLayout borderManager = new BorderLayout(2, 2); main.setLayout(borderManager); JPanel headerPanel = new JPanel(); JLabel label = new JLabel("Network JLabel("Network Status"); headerPanel.add(label); main.add(headerPanel, main.add(headerPanel, BorderLayout.NORTH); BorderLayout.NORTH); GridLayout gridManger = new GridLayout(5, 2); JPanel contents = new JPanel(); contents.setLayout(gridManger); JLabel node1 = new JLabel("Node 1"); JLabel node2 = new JLabel("Node 2"); JLabel node3 = new JLabel("Node 3"); JLabel node4 = new JLabel("Node 4"); JLabel node5 = new JLabel("Node 5"); contents.add(node1); contents.add(chek1); contents.add(node2); contents.add(chek2); contents.add(node3); contents.add(chek3); contents.add(node4); contents.add(chek4); contents.add(node5); contents.add(chek5); main.add(contents, main.add(contents, BorderLayout.CENTER); BorderLayout.CENTER); main.setSize(200, main.setSize(200, 200); main.setVisible(true); main.setDefaultCloseOperation(EXIT_ON_CLOSE); pack(); }
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
String name = ""; BufferedReader input; PrintWriter PrintWriter output; public HandleClient(Socket HandleClient(Socket client) client) throws Exception { input = new BufferedReader(new BufferedReader(new InputStreamReader(client.get InputStreamReader(client.getInputStream()) InputStream())); ); output = new PrintWriter(client.getOutputStream( PrintWriter(client.getOutputStream(), ), true); name = input.readLine(); Thread t = new Thread(this); t.start(); }
public String String getUserName() getUserName() { return name; } public void run() { System.out.println("thread System.out.println("thread started"); String line; try { while (true) { line = input.readLine(); input.readLine();
switch (line) { case "Node1U":chek1.setText("Up");break "Node1U":chek1.setText("Up");break;; case "Node1D":chek1.setText("Down");bre "Node1D":chek1.setText("Down");break; ak; case "Node1L":chek1.setText("Leader"); "Node1L":chek1.setText("Leader"); notifyLeader(1);break; notifyLeader(1);break; case "Node2U":chek2.setText("Up");brea "Node2U":chek2.setText("Up");break; k; case "Node2D":chek2.setText("Down");bre "Node2D":chek2.setText("Down");break; ak; case "Node2L":chek2.setText("Leader"); "Node2L":chek2.setText("Leader");notifyLeader(2); notifyLeader(2); break; case "Node3U":chek3.setText("Up");break "Node3U":chek3.setText("Up");break;; case "Node3D":chek3.setText("Down");bre "Node3D":chek3.setText("Down");break; ak; case "Node3L":chek3.setText("Leader"); "Node3L":chek3.setText("Leader"); notifyLeader(3); break; case "Node4U":chek4.setText("Up");break "Node4U":chek4.setText("Up");break;; case "Node4D":chek4.setText("Down");bre "Node4D":chek4.setText("Down");break; ak; case "Node4L":chek4.setText("Leader"); "Node4L":chek4.setText("Leader"); notifyLeader(4); break; case "Node5U":chek5.setText("Up");break "Node5U":chek5.setText("Up");break;; case "Node5D":chek5.setText("Down");bre "Node5D":chek5.setText("Down");break; ak; case "Node5L":chek5.setText("Leader"); "Node5L":chek5.setText("Leader"); notifyLeader(5); break; case "Nxt1":sendMsg("Node1",getNextNode("N "Nxt1":sendMsg("Node1",getNextNode("Node1")); ode1")); break; "Nxt2":sendMsg("Node2",getNextNode("N "Nxt2":sendMsg("Node2",getNextNode("Node2")); ode2")); break;
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
if(line.contains(":")){ System.out.println("in System.out.println("in if"); String[] temp=line.split(":"); temp=line.split(":"); String msg=temp[0]; String node=temp[1]; System.out.println("Destinati System.out.println("Destination on node is "+node+" msg is "+msg); sendMsg(node, msg); }else{ System.out.println(line); } break; }
} } catch (Exception ex) { System.out.println(ex.getMessage()); } } HandleClient c; public String String getNextNode(String getNextNode(String CurrentNode){ CurrentNode){ String nextNode=""; switch(CurrentNode){ case "Node1":if(chek2.getT "Node1":if(chek2.getText().equalsI ext().equalsIgnoreCase("Up")){ gnoreCase("Up")){ nextNode="Node2"; }else if(chek3.getText().equalsIgnoreC if(chek3.getText().equalsIgnoreCase("Up")){ ase("Up")){ nextNode="Node3"; }else if(chek4.getText().equalsIgnoreC if(chek4.getText().equalsIgnoreCase("Up")){ ase("Up")){ nextNode="Node4"; }else if(chek5.getText().equalsIgnoreC if(chek5.getText().equalsIgnoreCase("Up")){ ase("Up")){ nextNode="Node5"; } break; case "Node2":if(chek3.getT "Node2":if(chek3.getText().equalsI ext().equalsIgnoreCase("Up")){ gnoreCase("Up")){ nextNode="Node3"; }else if(chek4.getText().equalsIgnoreC if(chek4.getText().equalsIgnoreCase("Up")){ ase("Up")){ nextNode="Node4"; }else if(chek5.getText().equalsIgnoreC if(chek5.getText().equalsIgnoreCase("Up")){ ase("Up")){ nextNode="Node5"; }else if(chek1.getText().equalsIgnoreC if(chek1.getText().equalsIgnoreCase("Up")){ ase("Up")){
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
case "Node3":if(chek4.getT "Node3":if(chek4.getText().equalsI ext().equalsIgnoreCase("Up")){ gnoreCase("Up")){ nextNode="Node4"; }else if(chek5.getText().equalsIgnoreC if(chek5.getText().equalsIgnoreCase("Up")){ ase("Up")){ nextNode="Node5"; }else if(chek1.getText().equalsIgnoreC if(chek1.getText().equalsIgnoreCase("Up")){ ase("Up")){ nextNode="Node1"; }else if(chek2.getText().equalsIgnoreC if(chek2.getText().equalsIgnoreCase("Up")){ ase("Up")){ nextNode="Node2"; } break; case "Node4":if(chek5.getT "Node4":if(chek5.getText().equalsI ext().equalsIgnoreCase("Up")){ gnoreCase("Up")){ nextNode="Node5"; }else if(chek1.getText().equalsIgnoreC if(chek1.getText().equalsIgnoreCase("Up")){ ase("Up")){ nextNode="Node1"; }else if(chek2.getText().equalsIgnoreC if(chek2.getText().equalsIgnoreCase("Up")){ ase("Up")){ nextNode="Node2"; }else if(chek3.getText().equalsIgnoreC if(chek3.getText().equalsIgnoreCase("Up")){ ase("Up")){ nextNode="Node3"; } break; case "Node5":if(chek1.getT "Node5":if(chek1.getText().equalsI ext().equalsIgnoreCase("Up")){ gnoreCase("Up")){ nextNode="Node1"; }else if(chek2.getText().equalsIgnoreC if(chek2.getText().equalsIgnoreCase("Up")){ ase("Up")){ nextNode="Node2"; }else if(chek3.getText().equalsIgnoreC if(chek3.getText().equalsIgnoreCase("Up")){ ase("Up")){ nextNode="Node3"; }else if(chek4.getText().equalsIgnoreC if(chek4.getText().equalsIgnoreCase("Up")){ ase("Up")){ nextNode="Node4"; } break; }
return nextNode ; } private void sendMsg(String sendMsg(String CurrentNode, CurrentNode, String String nextNode) { System.out.println("Current System.out.println("Current is "+CurrentNode+" nextNode is "+nextNode); HandleClient temp; for(HandleClient for(HandleClient c1: clients){ if(c1.getUserName().equals if(c1.getUserName().equals(CurrentNode)){ (CurrentNode)){ temp=c1; c1.output.println(nextNode); System.out.println("OutMS System.out.println("OutMSG G to c1 is "+c1.getUserName()+" "+c1.getUserName()+" msg "+nextNode);
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
private void notifyLeader(int notifyLeader(int i) { System.out.println("in System.out.println("in notify"); switch(i){ case 1: if(chek1.getText().equalsIgnoreC if(chek1.getText().equalsIgnoreCase("Leader")){ ase("Leader")){ sendMsg("Node1","leader is 1"); } if(chek2.getText().equalsIgnoreCase("UP")){ sendMsg("Node2","leader is 1"); } if(chek3.getText().equalsIgnoreCase("UP")){ sendMsg("Node3","leader is 1"); } if(chek4.getText().equalsIgnoreCase("UP")){ sendMsg("Node4","leader is 1"); } if(chek5.getText().equalsIgnoreCase("UP")){ sendMsg("Node5","leader is 1"); } break; case 2: if(chek1.getText().equalsIgnore if(chek1.getText().equalsIgnoreCase("UP")){ Case("UP")){ sendMsg("Node1","leader is 2"); } if(chek2.getText().equalsIgnoreC if(chek2.getText().equalsIgnoreCase("Leader")){ ase("Leader")){ sendMsg("Node2","leader is 2"); } if(chek3.getText().equalsIgnoreCase("UP")){ sendMsg("Node3","leader is 2"); } if(chek4.getText().equalsIgnoreCase("UP")){ sendMsg("Node4","leader is 2"); } if(chek5.getText().equalsIgnoreCase("UP")){ sendMsg("Node5","leader is 2"); } break; case 3: if(chek1.getText().equalsIgnore if(chek1.getText().equalsIgnoreCase("UP")){ Case("UP")){ sendMsg("Node1","leader is 3"); } if(chek2.getText().equalsIgnoreCase("UP")){ sendMsg("Node2","leader is 3"); } if(chek3.getText().equalsIgnoreC if(chek3.getText().equalsIgnoreCase("Leader")){ ase("Leader")){
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
if(chek5.getText().equalsIgnoreCase("UP")){ sendMsg("Node5","leader is 3"); } break; case 4: if(chek1.getText().equalsIgnore if(chek1.getText().equalsIgnoreCase("UP")){ Case("UP")){ sendMsg("Node1","leader is 4"); } if(chek2.getText().equalsIgnoreCase("UP")){ sendMsg("Node2","leader is 4"); } if(chek3.getText().equalsIgnoreCase("UP")){ sendMsg("Node3","leader is 4"); } if(chek4.getText().equalsIgnoreC if(chek4.getText().equalsIgnoreCase("Leader")){ ase("Leader")){ sendMsg("Node4","leader is 4"); } if(chek5.getText().equalsIgnoreCase("UP")){ sendMsg("Node5","leader is 4"); } break; case 5: if(chek1.getText().equalsIgnore if(chek1.getText().equalsIgnoreCase("UP")){ Case("UP")){ sendMsg("Node1","leader is 5"); } if(chek2.getText().equalsIgnoreCase("UP")){ sendMsg("Node2","leader is 5"); } if(chek3.getText().equalsIgnoreCase("UP")){ sendMsg("Node3","leader is 5"); } if(chek4.getText().equalsIgnoreCase("UP")){ sendMsg("Node4","leader is 5"); }
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package ringcorordinataralgo; ringcorordinataralgo; import client.ChatClient; client.ChatClient; import java.util.logging.Level; java.util.logging.Level; import java.util.logging.Logger; java.util.logging.Logger; /** * * @author jalpAn */ public class Node1 Node1 { public static void main(String[] main(String[] args){ Node1 n=new Node1(); Node1(); try { n.start(); } catch (Exception ex) { Logger.getLogger(Node1.class. Logger.getLogger(Node1.class.getName()).log getName()).log(Level.SEV (Level.SEVERE, ERE, null, ex); } } private void start() start() { try { ChatClient c=new ChatClient("Node1", "localhost", 1); c.buildInterface(); } catch (Exception ex) { Logger.getLogger(Node1.class. Logger.getLogger(Node1.class.getName()).log getName()).log(Level.SEV (Level.SEVERE, ERE, null, ex); } } }
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
String uname; PrintWriter pw; BufferedReader br; JTextArea incomingMsgsTxt; incomingMsgsTxt; JTextField usrIpTxt; JButton btnSend, btnLogoff, btnLogin; Socket client; public ChatClient(String ChatClient(String uname, uname, String servername, servername, int i) throws Exception Exception { super(uname); this.uname = uname; this.NO = i; client = new Socket(servername, Socket(servername, 3990); br = new BufferedReader(new BufferedReader(new InputStreamReader(client.getI InputStreamReader(client.getInputStream()) nputStream())); ); pw = new PrintWriter(cl PrintWriter(client.getOutputS ient.getOutputStream(), tream(), true); true); pw.println(uname); pw.println(uname); MessagesThread m = new MessagesThread(); MessagesThread(); Thread t = new Thread(m); t.start(); } JButton connect = new JButton("Connect"); JButton("Connect"); public void buildInterface() buildInterface() { btnSend = new JButton("Election"); JButton("Election"); connect.addActionListener(new connect.addActionListener(new ActionListener() { @Override public void actionPerformed(Act actionPerformed(ActionEvent ionEvent e) { String cmd = connect.getText(); connect.getText(); switch (cmd) { case "Connect": pw.println("Node" + NO + "U");
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
incomingMsgsTxt.setEditable(false); JScrollPane sp = new JScrollPane(incomingMsgsTxt, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); add(sp, "Center"); JPanel bp = new JPanel(new FlowLayout()); bp.add(btnSend); bp.add(connect); add(bp, "South"); btnSend.addActionListener(new btnSend.addActionListener(new ActionListener() ActionListener() { @Override public void actionPerformed(Acti actionPerformed(ActionEvent onEvent arg0) { // starting election set the flag true Init_flag=true; //ask for next node sendMsg("Nxt" + NO); //recving next node informatoin
} });
setSize(250, 200); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); setAlwaysOnTop(true); pack(); } public void sendMsg(String sendMsg(String test) test) { pw.println(test); pw.println(test); }
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
String Msg="{"; boolean Init_flag=false; Init_flag=false; String saveMsg =""; public void reciveMsg() reciveMsg() { try { while (true) { line = br.readLine(); br.readLine(); System.out.println("recvied System.out.println("recvied > "+line); incomingMsgsTxt.append(line incomingMsgsTxt.append(line + "\n"); if(line.contains("Node")){ if(line.contains("Node")){ //recived next Node location location if(Init_flag){ Msg="{"+NO+","; sendMsg(line,Msg); }else{ sendMsg(line,saveMsg); } }else if(line.contains("{")){ if(line.contains("{")){ // msg recivied form other node as a part of election if(line.contains(NO+"")){//det if(line.contains(NO+"")){//determine ermine who is leader determineLeader(line); }else{ //append own NO in the msg by saving it to temp saveMsg=line+NO+","; sendMsg("Nxt"+NO); } } } } catch (Exception ex) { } } private void determineLeader(S determineLeader(String tring line) { System.out.println("Determ System.out.println("Determine ine Leader "+line);
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
for(i=0;ileader){ leader=nodes[i]; } } System.out.println("leader System.out.println("leader is "+leader); sendMsg("Node"+leader+"L");
} class MessagesThread implements Runnable { @Override public void run() { System.out.println("thread System.out.println("thread is client "); reciveMsg(); }
//
} }
HERE GOES THE OUTPUT
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Output State