Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ProxyServer extends Thread {
- private ServerSocket serverSocket;
- private final int serverPort=10100;
- private Map<String,Integer> map;
- public ProxyServer() {
- try {
- serverSocket=new ServerSocket(serverPort);
- map=new HashMap<>();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- @Override
- public void run() {
- System.out.println("Server is running...");
- while (true){
- try {
- Socket socket=serverSocket.accept();
- new Thread(new ServerWorker(socket,map)).start();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- public static void main(String[] args) {
- ProxyServer proxyServer=new ProxyServer();
- proxyServer.start();
- }
- }
- -----------------SERVER-WORKER----------------------
- public class ServerWorker extends Thread {
- private Socket socket;
- private PrintWriter printWriter;
- private Scanner scanner;
- private Map<String,Integer> map;
- public ServerWorker(Socket socket, Map<String, Integer> map) {
- this.socket = socket;
- this.map = map;
- try {
- printWriter=new PrintWriter(socket.getOutputStream(),true);
- scanner=new Scanner(socket.getInputStream());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- @Override
- public void run() {
- if(scanner.hasNextLine()){
- String clientOrServer=scanner.nextLine();
- if(clientOrServer.equals("*server")){
- System.out.println("Server accepted...");
- if(scanner.hasNextLine()){
- String urlPort=scanner.nextLine();
- String[] parts=urlPort.split(":");
- if(!map.containsKey(parts[0])){
- map.put(parts[0],Integer.parseInt(parts[1]));
- System.out.println(urlPort+" is added to map");
- printWriter.println("You are successfully added to proxy");
- }else {
- printWriter.println("url already exists!!!");
- }
- }
- }else if(clientOrServer.equals("*client")) {
- System.out.println("Client accepted...");
- while (true){
- //send msg to client
- printWriter.println("Enter url:");
- //receive url
- if(scanner.hasNextLine()){
- String url=scanner.nextLine();
- if(map.containsKey(url)){
- int port=map.get(url);
- printWriter.println(port);
- }else {
- printWriter.println("url does not exists...");
- }
- }
- }
- }else {
- System.out.println("Something else..");
- }
- }
- }
- }
- ---------------FINKI-SERVER-------------------
- public class FinkiServer extends Thread {
- private String url="finki.com.mk";
- private ServerSocket serverSocket;
- private final int serverPort=10940,proxyPort=10100;
- private PrintWriter printWriter;
- private Socket socket;
- private Scanner scanner;
- public FinkiServer() {
- try {
- serverSocket=new ServerSocket(serverPort);
- socket=new Socket("127.0.0.1",proxyPort);
- printWriter=new PrintWriter(socket.getOutputStream(),true);
- scanner=new Scanner(socket.getInputStream());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- @Override
- public void run() {
- //send server data to proxy server
- printWriter.println("*server");
- printWriter.println(url+":"+serverPort);
- //get message from server
- if(scanner.hasNextLine()){
- System.out.println(scanner.nextLine());
- }
- while (true){
- try {
- Socket socket1=serverSocket.accept();
- System.out.println("Client search for your url.");
- printWriter=new PrintWriter(socket1.getOutputStream(),true);
- printWriter.println("This is server of FINKI.");
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- public static void main(String[] args) {
- FinkiServer finkiServer=new FinkiServer();
- finkiServer.start();
- }
- }
- -----------------CLIENT--------------------------
- public class Client extends Thread {
- private Socket socket;
- private final int proxyPort=10100;
- private PrintWriter printWriter;
- private BufferedReader reader;
- private Scanner scanner;
- public Client() {
- try {
- socket=new Socket("127.0.0.1",proxyPort);
- printWriter=new PrintWriter(socket.getOutputStream(),true);
- reader=new BufferedReader(new InputStreamReader(System.in));
- scanner=new Scanner(socket.getInputStream());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- @Override
- public void run() {
- //new Thread(new ClientListener(socket)).start(); //start listening
- try {
- printWriter.println("*client");
- while (true){
- //send url to proxy
- if(scanner.hasNextLine()){
- String msg=scanner.nextLine();
- System.out.println(msg);
- String url=reader.readLine();
- printWriter.println(url);
- }
- //receive port of chosen url from proxy
- if(scanner.hasNextLine()){
- String port=scanner.nextLine();
- if(port.equals("url does not exists...")){
- System.out.println(port);
- }else {
- int portInt=Integer.parseInt(port);
- Socket socket1=new Socket("127.0.0.1",portInt);
- Scanner readDataFromChosenServer=new Scanner(socket1.getInputStream());
- if(readDataFromChosenServer.hasNextLine()){
- System.out.println(readDataFromChosenServer.nextLine());
- }
- }
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- Client client=new Client();
- client.start();
- }
- }
- ----------------CLIENT-LISTENER--------------
- public class Client extends Thread {
- private Socket socket;
- private final int proxyPort=10100;
- private PrintWriter printWriter;
- private BufferedReader reader;
- private Scanner scanner;
- public Client() {
- try {
- socket=new Socket("127.0.0.1",proxyPort);
- printWriter=new PrintWriter(socket.getOutputStream(),true);
- reader=new BufferedReader(new InputStreamReader(System.in));
- scanner=new Scanner(socket.getInputStream());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- @Override
- public void run() {
- //new Thread(new ClientListener(socket)).start(); //start listening
- try {
- printWriter.println("*client");
- while (true){
- //send url to proxy
- if(scanner.hasNextLine()){
- String msg=scanner.nextLine();
- System.out.println(msg);
- String url=reader.readLine();
- printWriter.println(url);
- }
- //receive port of chosen url from proxy
- if(scanner.hasNextLine()){
- String port=scanner.nextLine();
- if(port.equals("url does not exists...")){
- System.out.println(port);
- }else {
- int portInt=Integer.parseInt(port);
- Socket socket1=new Socket("127.0.0.1",portInt);
- Scanner readDataFromChosenServer=new Scanner(socket1.getInputStream());
- if(readDataFromChosenServer.hasNextLine()){
- System.out.println(readDataFromChosenServer.nextLine());
- }
- }
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- Client client=new Client();
- client.start();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement