diff --git a/RR-anotherversion b/RR-anotherversion new file mode 100644 index 0000000..8e5b9a7 --- /dev/null +++ b/RR-anotherversion @@ -0,0 +1,71 @@ +import java.net.*; +import java.util.LinkedList; + +public class RoundRobin { + private static LinkedList servers = new LinkedList<>(); + + public static void main(String[] args) { + try { + for (int i = 0; i < args.length; i += 2) { + servers.add(new Socket(args[i], Integer.parseInt(args[i + 1]))); + } + + ServerSocket serverSocket = new ServerSocket(5500); + + while (true) { + Socket conn = serverSocket.accept(); + Socket selected = selectServer(); + processRequest(conn, selected); + } + + } catch (IOException e) { + System.err.println(e.getMessage()); + } finally { + closeConnections(); + } + } + + private static synchronized Socket selectServer() { + Socket server = servers.poll(); + servers.add(server); + return server; + } + + private static void processRequest(Socket client, Socket server) throws IOException { + try { + InputStream in = client.getInputStream(); + OutputStream out = client.getOutputStream(); + DataInputStream din = new DataInputStream(in); + DataOutputStream dout = new DataOutputStream(server.getOutputStream()); + + // Read data from client and send it to server + byte[] buffer = new byte[1024]; + int bytesRead; + while ((bytesRead = in.read(buffer)) != -1) { + dout.write(buffer, 0, bytesRead); + dout.flush(); + } + + // Read response from server and send it back to client + buffer = new byte[1024]; + bytesRead = server.getInputStream().read(buffer); + if (bytesRead > 0) { + out.write(buffer, 0, bytesRead); + out.flush(); + } + + } finally { + client.close(); + } + } + + private static void closeConnections() { + try { + for (Socket server : servers) { + server.close(); + } + } catch (IOException e) { + System.err.println(e.getMessage()); + } + } +} diff --git a/roundrobin.java b/roundrobin.java index c0c42b3..334221e 100644 --- a/roundrobin.java +++ b/roundrobin.java @@ -1,51 +1,50 @@ -package com.myfirstjava.program; - -import java.io.*; -import java.net.ServerSocket; -import java.net.Socket; -import java.util.LinkedList; - -public class roundrobin { - //public static Socket[] servers = new Socket [3]; - public static int server_index = 0; - public static void main(String args[]) { - LinkedList s = new LinkedList(); - try { - int portNumber = 5500; - ServerSocket serverSocket = new ServerSocket(portNumber); - Socket conn = serverSocket.accept(); - - InputStream in = conn.getInputStream(); - OutputStream out = conn.getOutputStream(); - DataInputStream din=new DataInputStream(in); - DataOutputStream dout=new DataOutputStream(out); - - s.add(new Socket("127.0.0.1",12345)); - s.add(new Socket("127.0.0.1",5000)); - s.add(new Socket("127.0.0.1",4040)); - - server_index++; - if (server_index >= s.size()) { - server_index = 0; - } - Socket selected = s.get(server_index); - - //selected.out.writeInt(32); - - - /*for (int i = 0; s.size() <= 3; i++) { - Socket ser = s.get(i); - servers[i] = ser; - }*/ - //System.out.println(s.size()); - // System.out.println(servers); - //create linkedlist to store the connections other servers - //list.add(new Socket(!ip","port") - //BufferedInputStream bin=new BufferedInputStream(in); - //BufferedReader br = new BufferedReader(isr); - }catch (Exception e) { - System.err.println(e.getMessage()); - } - } -} - +package com.myfirstjava.program; + +import java.io.*; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.LinkedList; + +public class roundrobin { + //public static Socket[] servers = new Socket [3]; + public static int server_index = 0; + public static void main(String args[]) { + LinkedList s = new LinkedList(); + try { + int portNumber = 5500; + ServerSocket serverSocket = new ServerSocket(portNumber); + Socket conn = serverSocket.accept(); + + InputStream in = conn.getInputStream(); + OutputStream out = conn.getOutputStream(); + DataInputStream din=new DataInputStream(in); + DataOutputStream dout=new DataOutputStream(out); + + s.add(new Socket("127.0.0.1",12345)); + s.add(new Socket("127.0.0.1",5000)); + s.add(new Socket("127.0.0.1",4040)); + + server_index++; + if (server_index >= s.size()) { + server_index = 0; + } + Socket selected = s.get(server_index); + + //selected.out.writeInt(32); + + + /*for (int i = 0; s.size() <= 3; i++) { + Socket ser = s.get(i); + servers[i] = ser; + }*/ + //System.out.println(s.size()); + // System.out.println(servers); + //create linkedlist to store the connections other servers + //list.add(new Socket(!ip","port") + //BufferedInputStream bin=new BufferedInputStream(in); + //BufferedReader br = new BufferedReader(isr); + }catch (Exception e) { + System.err.println(e.getMessage()); + } + } +}