I am building a small chat application in which client A wants to send something to client C with server B in between. First of all is this a correct approach for the problem??. I am able to send and receive data to and from a server but it is limited to only the client.For example if Client A sends data to server B and client C is sending data to server B then i can send data back to A and C just like an echo server. But what i want is to forward data coming from Client A to Client C via server B.
The following is the server code:
public class Server { public static void main(String[] args) { int port = 666; //random port number try { ServerSocket ss = new ServerSocket(port); System.out.println("Waiting for a client...."); System.out.println("Got a client :) ... Finally, someone saw me through all the cover!"); System.out.println(); while(true) { Socket socket = ss.accept(); SSocket sSocket = new SSocket(socket); Thread t = new Thread(sSocket); t.start(); System.out.println("Socket Stack Size-----"+socketMap.size()); } } catch (Exception e) { } } } class SSocket implements Runnable { private Socket socket; public SSocket(Socket socket) { this.socket = socket; } @Override public void run() { try { InputStream in = socket.getInputStream(); OutputStream out = socket.getOutputStream(); DataInputStream dIn = new DataInputStream(in); DataOutputStream dOut = new DataOutputStream(out); String line = null; while (true) { line = dIn.readUTF(); System.out.println("Recievd the line----" + line); dOut.writeUTF(line + " Comming back from the server"); dOut.flush(); System.out.println("waiting for the next line...."); } } catch (Exception e) { } } } The client code is :
public class Client { public static void main(String[] args) { int serverPort = 666; try { InetAddress inetAdd = InetAddress.getByName("127.0.0.1"); Socket socket = new Socket(inetAdd, serverPort); InputStream in = socket.getInputStream(); OutputStream out = socket.getOutputStream(); DataInputStream dIn = new DataInputStream(in); DataOutputStream dOut = new DataOutputStream(out); BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Type in something and press enter. Will send it to the server and tell ya what it thinks."); System.out.println(); String line = null; while (true) { line = keyboard.readLine(); System.out.println("Wrinting Something on the server"); dOut.writeUTF(line); dOut.flush(); line = dIn.readUTF(); System.out.println("Line Sent back by the server---" + line); } } catch (Exception e) { } } }