Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Experiment 1 import java.util.*; public class Single_thread implements Runnable { Thread t1; void Singlethread() { t1=new Thread(this); t1.start(); } public void run() { try{ System.out.println(""); System.out.println(" Thread(t1) prints strings :"); String str[]={"we","are","implementing","single","thread"}; for(int i=0;i<5;i++) { System.out.println(str[i]); t1.sleep(200); } } catch(Exception e) { System.out.println(e); } } public static void main(String args[]) { Single_thread st=new Single_thread(); st.Singlethread(); Thread t = Thread.currentThread ( ); System.out.println ("Current Thread : " + t); System.out.println ("Name : " + t.getName ( ) ); t.setName ("BE_COMP_Thread"); System.out.println ("After changing name"); System.out.println ("Current Thread : " + t); System.out.println ("Name : " + t.getName ( ) ); System.out.println ("Main thread prints numbers"); try { for (int i=1; i<=10;i++) { System.out.print(i); System.out.print(" "); Thread.sleep(100); } } catch (Exception e) { System.out.println(e); } } } /*OUTPUT : ketan@ketan-desktop:~$ javac Single_thread.java ketan@ketan-desktop:~$ java Single_thread Current Thread : Thread[main,5,main] Name : main After changing name Current Thread : Thread[BE_COMP_Thread,5,main] Name : BE_COMP_Thread Main thread prints numbers 1 Thread(t1) prints strings : we 2 are 3 4 implementing 5 6 single 7 8 thread 9 10 */ Experiment 2 import java.util.*; import java.awt.*; import java.applet.*; import java.text.*; public class Clock extends Applet implements Runnable { Thread timer; SimpleDateFormat formatter; Date currentDate; Color handColor,numberColor; int xcenter = 80, ycenter = 55; public void init() { formatter = new SimpleDateFormat ("EEE MMM dd hh:mm:ss yyyy"); currentDate = new Date(); handColor = Color.blue; numberColor = Color.darkGray; } public void paint(Graphics g) { int xh, yh, xm, ym, xs, ys; int s = 0, m = 10, h = 10; String today; currentDate = new Date(); formatter.applyPattern("s"); s = Integer.parseInt(formatter.format(currentDate)); formatter.applyPattern("m"); m = Integer.parseInt(formatter.format(currentDate)); formatter.applyPattern("h"); h = Integer.parseInt(formatter.format(currentDate)); xs = (int) (Math.cos(s * Math.PI / 30 - Math.PI / 2) * 45 + xcenter); ys = (int) (Math.sin(s * Math.PI / 30 - Math.PI / 2) * 45 + ycenter); xm = (int) (Math.cos(m * Math.PI / 30 - Math.PI / 2) * 40 + xcenter); ym = (int) (Math.sin(m * Math.PI / 30 - Math.PI / 2) * 40 + ycenter); xh = (int) (Math.cos((h*30 + m / 2) * Math.PI / 180 - Math.PI / 2) * 30 + xcenter); yh = (int) (Math.sin((h*30 + m / 2) * Math.PI / 180 - Math.PI / 2) * 30 + ycenter); formatter.applyPattern("EEE MMM dd HH:mm:ss yyyy"); today = formatter.format(currentDate); g.setColor(numberColor); g.drawString(today, 5, 125); g.drawLine(xcenter, ycenter, xs, ys); g.setColor(handColor); g.drawLine(xcenter, ycenter-1, xm, ym); g.drawLine(xcenter-1, ycenter, xm, ym); g.drawLine(xcenter, ycenter-1, xh, yh); g.drawLine(xcenter-1, ycenter, xh, yh); g.setColor(handColor); g.drawArc(xcenter-50, ycenter-50, 100, 100, 0, 360 g.setColor(numberColor); g.drawString("9", xcenter-45, ycenter+3); g.drawString("3", xcenter+40, ycenter+3); g.drawString("12", xcenter-5, ycenter-37); g.drawString("6", xcenter-3, ycenter+45); } public void start() { timer = new Thread(this); timer.start(); } public void stop() { timer = null; } public void run() { Thread me = Thread.currentThread(); while (timer == me) { try { Thread.currentThread().sleep(100); } catch (InterruptedException e) {} repaint(); } } } Output Experiment 3 Client.java import java.net.*; import java.io.*; public class Client { public static void main(String args[]) { int serverPort = 1250; String address = "127.0.0.1"; try { InetAddress ipAddress = InetAddress.getByName(address); Socket socket = new Socket(ipAddress, serverPort); InputStream sin = socket.getInputStream(); OutputStream sout = socket.getOutputStream(); DataInputStream in = new DataInputStream(sin); DataOutputStream out = new DataOutputStream(sout); BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in)); String line = null; System.out.println("Type something and press enter for sending it to the server :"); System.out.println(); while(true) { line = keyboard.readLine(); System.out.println("Sending this line to the server..."); out.writeUTF(line); out.flush(); line = in.readUTF(); System.out.println("FROM SERVER : " + line); System.out.println(" enter more lines."); System.out.println(); } } catch(Exception x) { x.printStackTrace(); } } } Server.java import java.net.*; import java.io.*; public class Server { public static void main(String args[]) { int port = 1250; try { ServerSocket ss = new ServerSocket(port); System.out.println("Waiting for a client..."); Socket socket = ss.accept(); System.out.println("Got a client :"); System.out.println(); InputStream sin = socket.getInputStream(); OutputStream sout = socket.getOutputStream(); DataInputStream in = new DataInputStream(sin); DataOutputStream out = new DataOutputStream(sout); String line = null; while(true) { line = in.readUTF(); System.out.println("Client just sent me this line : " + line); System.out.println("I'm telling client that I got his lines..."); out.writeUTF("Your line is received... "); out.flush(); System.out.println("Waiting for the next line..."); System.out.println(); } } catch(Exception x) { x.printStackTrace(); } } } OUTPUT : //Server.java ketan@ketan-desktop:~$ javac Server.java ketan@ketan-desktop:~$ java Server Waiting for a client... Got a client : Client just sent me this line : hey server...! I'm telling client that I got his lines... Waiting for the next line... Client just sent me this line : thank's for responding..! I'm telling client that I got his lines... Waiting for the next line... //Client.java ketan@ketan-desktop:~$ javac Client.java ketan@ketan-desktop:~$ java Client Type something and press enter for sending it to the server : hey server...! Sending this line to the server... FROM SERVER : Your line is received... enter more lines. thank's for responding..! Sending this line to the server... FROM SERVER : Your line is received... enter more lines. Experiment 4 AIM: Client Server implementation using RMI RmiClient.java import java.rmi.*; import java.rmi.registry.*; import java.net.*; public class RmiClient { static public void main(String args[]) { ReceiveMessageInterface rmiServer; Registry registry; String serverAddress=args[0]; String serverPort=args[1]; String text=args[2]; System.out.println("sending "+text+" to "+serverAddress+":"+serverPort); try{ // get the gregistryh registry=LocateRegistry.getRegistry(serverAddress,(new Integer(serverPort)).intValue()); // look up the remote object rmiServer=(ReceiveMessageInterface)(registry.lookup("rmiServer")); // call the remote method rmiServer.receiveMessage(text); } catch(RemoteException e) { e.printStackTrace(); } catch(NotBoundException e) { e.printStackTrace(); } } } RmiServer.java import java.rmi.*; import java.rmi.registry.*; import java.rmi.server.*; import java.net.*; public class RmiServer extends java.rmi.server.UnicastRemoteObject implements ReceiveMessageInterface { int thisPort; String thisAddress; Registry registry; // rmi registry for lookup the remote objects. // This method is called from the remote client by the RMI. // This is the implementation of the gReceiveMessageInterfaceh. public void receiveMessage(String x) throws RemoteException { int no; System.out.println("Square of " +x+ " is "+Integer.parseInt(x)*Integer.parseInt(x) ); } public RmiServer() throws RemoteException { try { // get the address of this host. thisAddress= (InetAddress.getLocalHost()).toString(); } catch(Exception e) { throw new RemoteException("can't get inet address."); } thisPort=3232; // this port(registryfs port) System.out.println("This address="+thisAddress+",port="+thisPort); try { // create the registry and bind the name and object. registry = LocateRegistry.createRegistry( thisPort ); registry.rebind("rmiServer", this); } catch(RemoteException e) { throw e; } } static public void main(String args[]) { try { RmiServer s=new RmiServer(); } catch (Exception e) { e.printStackTrace(); System.exit(0); } } } ReceiveMessageInterface.java import java.rmi.*; public interface ReceiveMessageInterface extends Remote { void receiveMessage(String x) throws RemoteException; } OUTPUT RmiClient.java RmiServer.java Experiment 5 Client1.java import java.net.*; import java.io.*; public class Client1 { public static void main(String hghggh[]) { String msg; try{ Socket sock=new Socket("127.0.0.1",8250); InputStreamReader stream=new InputStreamReader(sock.getInputStream()); BufferedReader reader=new BufferedReader(stream); PrintStream writer =new PrintStream(sock.getOutputStream()); BufferedReader nb=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter time : "); msg=nb.readLine(); writer.println(msg); msg=reader.readLine(); System.out.println("Synchronised time : "+msg); reader.close(); writer.close(); }catch(IOException e) {} }} Client2.java import java.net.*; import java.io.*; public class Client2 { public static void main(String hghggh[]) { String msg; try{ Socket sock=new Socket("127.0.0.1",8250); InputStreamReader stream=new InputStreamReader(sock.getInputStream()); BufferedReader reader=new BufferedReader(stream); PrintStream writer =new PrintStream(sock.getOutputStream()); BufferedReader nb=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter time : "); msg=nb.readLine(); writer.println(msg); msg=reader.readLine(); System.out.println("Synchronised time : "+msg); reader.close(); writer.close(); }catch(IOException e) {} } } Client3.java import java.net.*; import java.io.*; public class Client3 { public static void main(String hghggh[]) { String msg; try{ Socket sock=new Socket("127.0.0.1",8250); InputStreamReader stream=new InputStreamReader(sock.getInputStream()); BufferedReader reader=new BufferedReader(stream); PrintStream writer=new PrintStream(sock.getOutputStream()); BufferedReader nb=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter time : "); msg=nb.readLine(); writer.println(msg); msg=reader.readLine(); System.out.println("Synchronised time : "+msg); reader.close(); writer.close(); }catch(IOException e) {} } } Server.java import java.net.*; import java.io.*; public class Server { public static void main(String hghggh[]) { String m1,m2,m3,m; int t1,t2,t3,T; try{ ServerSocket ss=new ServerSocket(8250); System.out.println("waiting for clients "); Socket sock1=ss.accept(); Socket sock2=ss.accept(); Socket sock3=ss.accept(); InputStreamReader stream1=new InputStreamReader(sock1.getInputStream()); BufferedReader reader1=new BufferedReader(stream1); PrintStream writer1 =new PrintStream(sock1.getOutputStream()); InputStreamReader stream2=new InputStreamReader(sock2.getInputStream()); BufferedReader reader2=new BufferedReader(stream2); PrintStream writer2 =new PrintStream(sock2.getOutputStream()); InputStreamReader stream3=new InputStreamReader(sock3.getInputStream()); BufferedReader reader3=new BufferedReader(stream3); PrintStream writer3 =new PrintStream(sock3.getOutputStream()); BufferedReader nb=new BufferedReader(new InputStreamReader(System.in)); m1=reader1.readLine(); m2=reader2.readLine(); m3=reader3.readLine(); t1=Integer.parseInt(m1); t2=Integer.parseInt(m2); t3=Integer.parseInt(m3); T=(t1+t2+t3)/3; m = Integer.toString(T); writer1.println(m); writer2.println(m); writer3.println(m); reader1.close(); writer1.close(); reader2.close(); writer2.close(); reader3.close(); writer3.close(); }catch(IOException e) {} } } /*OUTPUT : //AT SERVER ketan@ketan-desktop:~$ javac Server.java ketan@ketan-desktop:~$ java Server waiting for clients ketan@ketan-desktop:~$ //AT CLIENT 1 ketan@ketan-desktop:~$ javac Client1.java ketan@ketan-desktop:~$ java Client1 Enter time : 5 Synchronised time : 6 //AT CLIENT 2 ketan@ketan-desktop:~$ javac Client2.java ketan@ketan-desktop:~$ java Client2 Enter time : 6 Synchronised time : 6 //AT CLIENT 3 ketan@ketan-desktop:~$ javac Client3.java ketan@ketan-desktop:~$ java Client3 Enter time : 7 Synchronised time : 6 */ Experiment 6 AIM: Implementation of Election Algorithm. import java.util.Random; import java.util.Scanner; class Process implements Runnable { static Process[] list=new Process[5]; static int count; int id; boolean rejected; public Process() { id=count+1; list[count]=this; count+=1; } public int getID() { return this.id; } public void run() { this.sendElectionMessage(); } public void sendElectionMessage() { int level= this.getID(); for(int i=level;i<list.length;i++) list[i].receiveMessage(this); try{ Thread.sleep(500); } catch(Exception e) { e.printStackTrace(); } if(rejected) rejected=false; else System.out.println(id+" is the coordinator"); } public void sendCoordinatorMessage() { int level=this.getID(); level-=1; for(int i=level; i>=0;i--) list[i].rejected=true; } public void receiveMessage(Process p) { System.out.println("Process "+ this.id +" got election request from process"+ p.getID()); boolean random=false; Random randomGen=new Random(); random=randomGen.nextBoolean(); if(random) { System.out.println(this.id+" wants to be coordinaor"); System.out.println("Process "+ p.id +" request got rejected by process"+ this.id); this.sendElectionMessage(); p.rejected=true; } } } public class Election { public static void main(String args[]) throws Exception { for(int i=0;i<5;i++) { Process p=new Process(); } (new Thread(Process.list[0])).start(); } } OUTPUT: ketan@ketan-desktop:~$ javac Election.java ketan@ketan-desktop:~$ java Election Process 2 got election request from process1 Process 3 got election request from process1 3 wants to be coordinaor Process 1 request got rejected by process3 Process 4 got election request from process3 Process 5 got election request from process3 5 wants to be coordinaor Process 3 request got rejected by process5 5 is the coordinator Process 4 got election request from process1 Process 5 got election request from process1 Experiment 7 import java.util.*; public class Deadlock { int n,p,i,j=0; int process[][]; int site[][],loc_glob[][]; int restrict[][]; boolean flag1=false,flag2=false; Scanner src=new Scanner(System.in); Deadlock() { System.out.println("Enter no of nodes/sites and total processes in system :"); n=src.nextInt(); p=src.nextInt(); process=new int[p][p]; site=new int[n][p]; loc_glob=new int[p][p]; restrict=new int[p][p]; System.out.println("Assign processes to nodes/sites :"); for( i=1;i<=n;i++) { System.out.println("At site "+i+" processes are :(Enter '-1' to stop assigning)"); while(true) { if(j==p)break; int proc=src.nextInt(); if(proc==-1) break; else site[i-1][proc-1]=1; j++; } } System.out.println("Enter wait/assign matrix for processes :"); for(i=1;i<=p;i++) { System.out.println("Process "+i+" is waiting for process/es :(Enter '-1' to stop assigning)"); while(true) { int proc=src.nextInt(); if(proc==-1) break; else process[i-1][proc-1]=1; } } } int detect_deadlock(int x,int y) { for(int l=1;l<=p;l++) { if(process[y-1][l-1]==1) { loc_glob[x-1][y-1]=1; if(x==l) { loc_glob[x-1][x-1]=-1; flag1=true; break; } else{ if(restrict[x-1][l-1]<1) { restrict[x-1][l-1]=1; detect_deadlock(x,l); } } } } if(flag1==true)return -1; else return -2; } int display() { System.out.println("Site Vs process matrix :"); for(i=0;i<n;i++) { for(j=0;j<p;j++) System.out.print(" "+site[i][j]); System.out.println(""); } System.out.println("Process Vs process matrix :"); for(i=0;i<p;i++) { for(j=0;j<p;j++) System.out.print(" "+process[i][j]); System.out.println(""); } int check=0; for(i=1;i<=p;i++) { for(j=1;j<=p;j++) { if(process[i-1][j-1]==1) { restrict[i-1][j-1]=1; check=detect_deadlock(i,j); if(check==-1)return -1; } } } return -2; } void local_or_global() { for(i=1;i<=p;i++) if(loc_glob[i-1][i-1]==-1) break; int s; for( s=1;s<=n;s++) if(site[s-1][i-1]==1) break; for(j=i+1;j<=p;j++) if(loc_glob[i-1][j-1]==1 && site[s-1][j-1]==1) flag2=true; else {flag2 =false; break;} if(flag2==true) System.out.println("and it is LOCAL DEADLOCK at site : "+s); else System.out.println("and it is GLOBAL DEADLOCK : "); } public static void main(String args[]) { Deadlock dl=new Deadlock(); int t= dl.display(); if(t==-1){ System.out.println("Deadlock Occur :"); dl.local_or_global(); } else System.out.println("Deadlock not found :"); } } /*OUTPUT : //1 . check for global deadlock ketan@ketan-desktop:~$ javac Deadlock.java ketan@ketan-desktop:~$ java Deadlock Enter no of nodes/sites and total processes in system : 3 6 Assign processes to nodes/sites : At site 1 processes are :(Enter '-1' to stop assigning) 1 2 -1 At site 2 processes are :(Enter '-1' to stop assigning) 3 4 -1 At site 3 processes are :(Enter '-1' to stop assigning) 5 6 Enter wait/assign matrix for processes : Process 1 is waiting for process/es :(Enter '-1' to stop assigning) 2 -1 Process 2 is waiting for process/es :(Enter '-1' to stop assigning) 3 -1 Process 3 is waiting for process/es :(Enter '-1' to stop assigning) 4 -1 Process 4 is waiting for process/es :(Enter '-1' to stop assigning) 5 -1 Process 5 is waiting for process/es :(Enter '-1' to stop assigning) 6 -1 Process 6 is waiting for process/es :(Enter '-1' to stop assigning) 3 -1 Site Vs process matrix : 110000 001100 000011 Process Vs process matrix : 010000 001000 000100 000010 000001 001000 Deadlock Occur : and it is GLOBAL DEADLOCK : //2.Check for local deadlock ketan@ketan-desktop:~$ java Deadlock Enter no of nodes/sites and total processes in system : 2 4 Assign processes to nodes/sites : At site 1 processes are :(Enter '-1' to stop assigning) 1 2 -1 At site 2 processes are :(Enter '-1' to stop assigning) 3 4 Enter wait/assign matrix for processes : Process 1 is waiting for process/es :(Enter '-1' to stop assigning) 2 4 -1 Process 2 is waiting for process/es :(Enter '-1' to stop assigning) 3 -1 Process 3 is waiting for process/es :(Enter '-1' to stop assigning) 4 -1 Process 4 is waiting for process/es :(Enter '-1' to stop assigning) 3 -1 Site Vs process matrix : 1100 0011 Process Vs process matrix : 0101 0010 0001 0010 Deadlock Occur : and it is LOCAL DEADLOCK at site : 2 //3.check if there is no deadlock ketan@ketan-desktop:~$ java Deadlock Enter no of nodes/sites and total processes in system : 2 4 Assign processes to nodes/sites : At site 1 processes are :(Enter '-1' to stop assigning) 1 2 -1 At site 2 processes are :(Enter '-1' to stop assigning) 3 4 Enter wait/assign matrix for processes : Process 1 is waiting for process/es :(Enter '-1' to stop assigning) 2 3 4 -1 Process 2 is waiting for process/es :(Enter '-1' to stop assigning) 3 -1 Process 3 is waiting for process/es :(Enter '-1' to stop assigning) 4 -1 Process 4 is waiting for process/es :(Enter '-1' to stop assigning) -1 Site Vs process matrix : 1100 0011 Process Vs process matrix : 0111 0010 0001 0000 Deadlock not found : */ Experiment 8 AIM: Chat Server ChatClient.java import java.io.*; import java.net.*; public class chatclient { public static void main(String args[]) throws Exception { Socket sk=new Socket("192.168.0.44",2000); BufferedReader sin=new BufferedReader(new InputStreamReader(sk.getInputStream())); PrintStream sout=new PrintStream(sk.getOutputStream()); BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in)); String s; while ( true ) { System.out.print("Client : "); s=stdin.readLine(); sout.println(s); s=sin.readLine(); System.out.print("Server : "+s+"\n"); if ( s.equalsIgnoreCase("BYE") ) break; } sk.close(); sin.close(); sout.close(); stdin.close(); } } ChatServer.java import java.net.*; import java.io.*; public class chatserver { public static void main(String args[]) throws Exception { ServerSocket ss=new ServerSocket(2000); Socket sk=ss.accept(); BufferedReader cin=new BufferedReader(new InputStreamReader(sk.getInputStream())); PrintStream cout=new PrintStream(sk.getOutputStream()); BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in)); String s; while ( true ) { s=cin.readLine(); if (s.equalsIgnoreCase("END")) { cout.println("BYE"); break; } System. out.print("Client : "+s+"\n"); System.out.print("Server : "); s=stdin.readLine(); cout.println(s); } ss.close(); sk.close(); cin.close(); cout.close(); stdin.close(); }} OUTPUT ChatClient.java ketan@ketan-desktop:~$ javac chatclient.java ketan@ketan-desktop:~$ java chatclient Client : hi ! Server : hello.. Client : how are u ? Server : fine.. Client : end Server : BYE rahul@rahul-desktop:~$ ChatServer.java ketan@ketan-desktop:~$ javac chatserver.java ketan@ketan-desktop:~$ java chatserver Client : hi ! Server : hello.. Client : how are u ? Server : fine.. Experiment 9 AIM :To implement name resolution. import java.util.*; class Directory { String level,identifier; Directory next; Directory(String l,String id) { level=l; identifier=id; next=null; } } class Name_resolution { boolean flag=false; int s,i,j,k; String elevel,id,path; String way[]; Directory node[]; Directory temp[]; Directory p[],d[]; Scanner src=new Scanner(System.in); void name_resolution() { System.out.println("Enter no. of Servers(having directories) in system :"); s=src.nextInt(); node=new Directory[s]; temp=new Directory[s]; p=new Directory[s]; d=new Directory[s]; System.out.println("To stop entries in directory,enter 'edge level' as '1' :"); for(i=0;i<s;i++) { System.out.println("For Server "+(i+1)+"'s directory(d"+(i)+"),Enter 'Edge level' and 'Node identifier':"); do{ elevel=src.next(); if(elevel.equalsIgnoreCase("1")) break; id=src.next(); node[i]=new Directory(elevel,id); if(p[i]==null) { p[i]=node[i]; temp[i]=p[i]; d[i]=p[i]; } else { while(temp[i].next!=null) temp[i]=temp[i].next; temp[i].next=node[i]; } }while(true); } } void resolve(int x,int w) { if((w>=k)||(x>=s))return; else while(d[x]!=null) { if((d[x].level).equalsIgnoreCase(way[w])) { String res= d[x].identifier; char ch[]=res.toCharArray(); if(w==(k-1) && ch[0]=='n') { flag=true; System.out.println("your resource is at node :"+d[x].identifier); return; } if(w<(k-1) && ch[0]=='n') {flag=true; System.out.println("Invalid Path :"); return; } if(w<(k-1) && ch[0]=='d') { int val=0; if((int)ch[1]>=49) val=(int)ch[1]-48; resolve(val,w+1); } } d[x]=d[x].next; } } void display() { for(int q=0;q<s;q++) { System.out.println("At Server "+(q+1)+"'s directory(d"+q+") :"); System.out.println("EdgeLevel\tNodeIdentifier"); while(p[q]!=null) { System.out.println(p[q].level+" \t "+p[q].identifier); p[q]=p[q].next; } } System.out.println("Enter path for finding(resolving resource) node :(e.g./home/steen/mbox) "); path=src.next(); Scanner src1 = new Scanner(path); Scanner src2 = new Scanner(path); src1.useDelimiter("/"); src2.useDelimiter("/"); k=0; while (src1.hasNext()) { if (src1.hasNext()) { k++; src1.next(); } else { break; } } way=new String[k]; k=0; while (src2.hasNext()) { if (src2.hasNext()) { way[k]=src2.next(); k++; } else { break; } } resolve(0,0); if(flag==false) System.out.println("Invalid Path :"); } public static void main(String args[]) { Name_resolution nr=new Name_resolution(); nr.name_resolution(); nr.display(); } } /*OUTPUT : ketan@ketan-desktop:~$ javac Name_resolution.java ketan@ketan-desktop:~$ java Name_resolution Enter no. of Servers(having directories) in system : 3 To stop entries in directory,enter 'edge level' as '1' : For Server 1's directory(d0),Enter 'Edge level' and 'Node identifier': home d1 keys n4 1 For Server 2's directory(d1),Enter 'Edge level' and 'Node identifier': elke n0 max n1 steen d2 1 For Server 3's directory(d2),Enter 'Edge level' and 'Node identifier': twrc n2 mbox n3 1 At Server 1's directory(d0) : EdgeLevel home d1 keys n4 NodeIdentifier At Server 2's directory(d1) : EdgeLevel elke n0 max n1 steen d2 NodeIdentifier At Server 3's directory(d2) : EdgeLevel twrc n2 mbox n3 NodeIdentifier Enter path for finding(resolving resource) node :(e.g./home/steen/mbox) /home/steen/twrc your resource is at node :n2 ketan@ketan-desktop:~$ java Name_resolution Enter no. of Servers(having directories) in system : 3 To stop entries in directory,enter 'edge level' as '1' : For Server 1's directory(d0),Enter 'Edge level' and 'Node identifier': home d1 keys n4 1 For Server 2's directory(d1),Enter 'Edge level' and 'Node identifier': max n1 steen d2 1 For Server 3's directory(d2),Enter 'Edge level' and 'Node identifier': twrc n2 mbox n3 1 At Server 1's directory(d0) : EdgeLevel NodeIdentifier home d1 keys n4 At Server 2's directory(d1) : EdgeLevel max n1 steen d2 NodeIdentifier At Server 3's directory(d2) : EdgeLevel twrc n2 mbox n3 NodeIdentifier Enter path for finding(resolving resource) node :(e.g./home/steen/mbox) /home/steen/keys Invalid Path : ketan@ketan-desktop:~$ */ Experiment 10 AIM: Client Server Implementation using CORBA Architecture. import HelloApp.*; import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*; import org.omg.CORBA.*; public class HelloClient { static Hello helloImpl; public static void main(String args[]) { try{ // create and initialize the ORB ORB orb = ORB.init(args, null); // get the root naming context org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); // Use NamingContextExt instead of NamingContext. This is // part of the Interoperable naming Service. NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); // resolve the Object Reference in Naming String name = "Hello"; helloImpl = HelloHelper.narrow(ncRef.resolve_str(name)); System.out.println("Obtained a handle on server object: " + helloImpl); System.out.println(helloImpl.sayHello()); helloImpl.shutdown(); } catch (Exception e) { System.out.println("ERROR : " + e) ; e.printStackTrace(System.out); } } } import HelloApp.*; import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*; import org.omg.CORBA.*; import org.omg.PortableServer.*; import org.omg.PortableServer.POA; import java.util.Properties; class HelloImpl extends HelloPOA { private ORB orb; public void setORB(ORB orb_val) { orb = orb_val; } // implement sayHello() method public String sayHello() { return "\nHello world !!\n"; } // implement shutdown() method public void shutdown() { orb.shutdown(false); } } public class HelloServer { public static void main(String args[]) { try{ // create and initialize the ORB ORB orb = ORB.init(args, null); // get reference to rootpoa & activate the POAManager POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); rootpoa.the_POAManager().activate(); // create servant and register it with the ORB HelloImpl helloImpl = new HelloImpl(); helloImpl.setORB(orb); // get object reference from the servant org.omg.CORBA.Object ref = rootpoa.servant_to_reference(helloImpl); Hello href = HelloHelper.narrow(ref); org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); // bind the Object Reference in Naming String name = "Hello"; NameComponent path[] = ncRef.to_name( name ); ncRef.rebind(path, href); System.out.println("HelloServer ready and waiting ..."); // wait for invocations from clients orb.run(); } catch (Exception e) { System.err.println("ERROR: " + e); e.printStackTrace(System.out); } System.out.println("HelloServer Exiting ..."); } } OUTPUT