Download DC-KETAN

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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