DS report file
DS report file
TECHNOLOGY
AGRA COLLEGE, AGRA
int id;
int timestamp;
boolean requesting;
boolean inCS;
boolean[] deferReplies;
Process(int id) {
this.id = id;
this.timestamp = 0;
this.requesting = false;
this.inCS = false;
initializeProcesses();
simulateDistributedMutualExclusion();
}
private static void initializeProcesses() {
requestCriticalSection(processId);
} else if (processes[processId].inCS) {
releaseCriticalSection(processId);
if (i != processId) {
handleRequest(processId, i);
handleReply(i, processId);
printSystemState();
processes[processId].requesting = true;
processes[processId].timestamp = totalRequests;
processes[processId].inCS = false;
processes[processId].requesting = false;
if (processes[processId].deferReplies[i]) {
processes[processId].deferReplies[i] = false;
totalRequests++;
if (processes[receiverId].inCS ||
(processes[receiverId].requesting &&
processes[receiverId].deferReplies[senderId] = true;
} else {
if (processes[receiverId].requesting) {
canEnter = false;
break;
if (canEnter) {
processes[receiverId].inCS = true;
processes[receiverId].requesting = false;
System.out.println("\nSystem State:");
System.out.println();
}
3. Implement a Distributed Chat Server using TCP Sockets in JAVA
SERVER.JAVA
import java.io.*;
import java.net.*;
import java.util.*;
try {
while (true) {
new ClientHandler(listener.accept()).start();
} finally {
listener.close();
try {
while (true) {
out.println("SUBMITNAME");
name = in.readLine();
if (name == null) {
return;
synchronized (writers) {
if (!writers.contains(out)) {
out.println("NAMEACCEPTED");
writers.add(out);
break;
while (true) {
if (input == null) {
return;
}
}
} catch (IOException e) {
System.out.println(e);
} finally {
if (name != null) {
if (out != null) {
writers.remove(out);
try {
socket.close();
} catch (IOException e) {
CLIENT.JAVA
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
BufferedReader in;
PrintWriter out;
textField.setEditable(false);
messageArea.setEditable(false);
frame.getContentPane().add(textField, "North");
frame.pack();
textField.addActionListener(new ActionListener() {
out.println(textField.getText());
textField.setText("");
});
return JOptionPane.showInputDialog(
frame,
JOptionPane.QUESTION_MESSAGE);
return JOptionPane.showInputDialog(
frame,
JOptionPane.PLAIN_MESSAGE);
}
private void run() throws IOException {
while (true) {
if (line.startsWith("SUBMITNAME")) {
out.println(getName());
} else if (line.startsWith("NAMEACCEPTED")) {
textField.setEditable(true);
} else if (line.startsWith("MESSAGE")) {
messageArea.append(line.substring(8) + "\n");
client.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
client.frame.setVisible(true);
client.run();
}
4. Implement Java RMI" mechanism for accessing methods of remote
systems
CalculatorService.java (Remote Interface)
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
super();
@Override
return a + b;
}
@Override
return a - b;
@Override
return a * b;
@Override
if (b == 0) {
return a / b;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
registry.rebind("CalculatorService", calculator);
} catch (Exception e) {
e.printStackTrace();
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
try {
registry.rebind("CalculatorService", calculator);
} catch (Exception e) {
e.printStackTrace();
int base;
int nextSeqNum;
int windowSize;
boolean[] acked;
Timer[] timers;
Sender() {
base = 0;
nextSeqNum = 0;
windowSize = INITIAL_WINDOW_SIZE;
receiver.receive(nextSeqNum);
} else {
System.out.println("Sender: Packet " + nextSeqNum + " lost");
startTimer(nextSeqNum);
nextSeqNum++;
timers[seqNum].schedule(new TimerTask() {
@Override
handleTimeout(seqNum);
}, TIMEOUT * 1000);
nextSeqNum = seqNum;
acked[ackNum] = true;
if (ackNum == base) {
if (timers[base] != null) {
timers[base].cancel();
}
base++;
adjustWindow(true);
windowSize++;
windowSize--;
int expectedSeqNum;
int windowSize;
Receiver() {
expectedSeqNum = 0;
windowSize = INITIAL_WINDOW_SIZE;
if (seqNum == expectedSeqNum) {
expectedSeqNum++;
adjustWindow(true);
sendAck(expectedSeqNum - 1);
adjustWindow(false);
} else {
sendAck(seqNum);
// In a real implementation, this would send the ACK back to the sender
windowSize++;
windowSize--;
sender.send(receiver);
// Simulate ACKs being received (with some delay and possible loss)
try {
} catch (InterruptedException e) {
e.printStackTrace();
sender.receiveAck(i);
try {
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("Transmission complete!");
}
6. Implement CORBA mechanism by using C++program at one end
and Java program on the other.
// Filename: Hello.idl
module HelloApp {
interface Hello {
string say_hello();
};
};
// HelloServer.cpp
// HelloClient.java
import HelloApp.*;
javac HelloClient.java
java HelloClient