I am trying to connect a client with gui with a server withoout gui. Connection is being done, but i cant see any messages between these two apps. (i should get SERVER HERE in client, and CLIENT HERE in server)
Client Connection Code:
@Override public void ClientRunning(){ try { connectToServer(); setStreams(); ClientRun(); }catch(EOFException oefException){ showMessage("\n Client terminated the connection\n"); }catch(IOException ioException){ ioException.printStackTrace(); }finally{ close(); } } public void connectToServer() throws IOException{ showMessage("Attempting Connection... \n"); connection = new Socket(InetAddress.getByName(serverIP),6789); showMessage("Connected to: "+ connection.getInetAddress().getHostName()); } public void setStreams() throws IOException{ output = new PrintWriter(connection.getOutputStream(),true); output.flush(); input= new BufferedReader(new InputStreamReader(connection.getInputStream())); showMessage("\n Streams are now set. \n"); } public void close(){ showMessage("\n closing..."); try{ output.close(); input.close(); connection.close(); }catch(IOException ioException){ ioException.printStackTrace(); } } public void showMessage(final String text){ SwingUtilities.invokeLater(new Runnable(){ public void run(){ cwindow.append(text); } }); } public void sendMessage(String message){ output.write("CLIENT - "+message); output.flush(); showMessage("\nCLIENT - "+message); } private void ClientRun() throws IOException{ String message="CLIENT HERE!"; sendMessage(message); do{ try{ message=input.readLine(); showMessage("\n"+message); }catch(EOFException eofException){ showMessage("\n Server ended the connection!"); } }while(message!="EXIT"); } (input and output are defined in GUI class in which this Client class is extended to. Defined as "protected BufferedReader input; protected PrintWriter output;")
Also, servers code:
public class ServerClass { private ServerSocket server; private Socket connection; private BufferedReader input; private BufferedWriter output; public void startServer(){ try{ server=new ServerSocket(6789,100); while(true){ try{ waitForConnection(); setStreams(); ServerRunning(); }catch(EOFException eofException){ showMessage("\n Server ended the connection!"); }finally{ close(); } } }catch(IOException ioException){ ioException.printStackTrace(); } } private void waitForConnection() throws IOException{ showMessage("Waiting for someone to connect... \n"); connection=server.accept(); showMessage("Now connected to "+ connection.getInetAddress().getHostName()); } private void setStreams() throws IOException{ output = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream())); output.flush(); input= new BufferedReader(new InputStreamReader(connection.getInputStream())); showMessage("\n Streams are now set. \n"); } public void ServerRunning() throws IOException{ String message="SERVER HERE!"; sendMessage(message); do{ try{ message=input.readLine(); showMessage("\n"+message); }catch(EOFException eofException){ showMessage("\n Server ended the connection!"); } }while(message!="EXIT"); } private void close(){ showMessage("\n Closing connections... \n"); try{ output.close(); input.close(); connection.close(); }catch(IOException ioException){ ioException.printStackTrace(); } } private void showMessage(String text){ System.out.println(text); } private void sendMessage(String message){ try{ output.write("SERVER - "+message); output.flush(); showMessage(message); }catch(IOException ioException){ System.out.println("\n ERROR!"); } } Connection seems to be ok, so i don't get whats wrong. Any help would be appreciated.
PS: i also tried PrintWriter in server as well and also tried a try catch in stream statement, the problem remains.
flush()insetStreams()is pointless. You haven't written anything yet, so there is nothing to flush. Your server structure doesn't support multiple clients.