Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>This is the echo server handling multiple clients... Runs fine and good using Threads</p> <pre><code>// echo server import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class Server_X_Client { public static void main(String args[]){ Socket s=null; ServerSocket ss2=null; System.out.println("Server Listening......"); try{ ss2 = new ServerSocket(4445); // can also use static final PORT_NUM , when defined } catch(IOException e){ e.printStackTrace(); System.out.println("Server error"); } while(true){ try{ s= ss2.accept(); System.out.println("connection Established"); ServerThread st=new ServerThread(s); st.start(); } catch(Exception e){ e.printStackTrace(); System.out.println("Connection Error"); } } } } class ServerThread extends Thread{ String line=null; BufferedReader is = null; PrintWriter os=null; Socket s=null; public ServerThread(Socket s){ this.s=s; } public void run() { try{ is= new BufferedReader(new InputStreamReader(s.getInputStream())); os=new PrintWriter(s.getOutputStream()); }catch(IOException e){ System.out.println("IO error in server thread"); } try { line=is.readLine(); while(line.compareTo("QUIT")!=0){ os.println(line); os.flush(); System.out.println("Response to Client : "+line); line=is.readLine(); } } catch (IOException e) { line=this.getName(); //reused String line for getting thread name System.out.println("IO Error/ Client "+line+" terminated abruptly"); } catch(NullPointerException e){ line=this.getName(); //reused String line for getting thread name System.out.println("Client "+line+" Closed"); } finally{ try{ System.out.println("Connection Closing.."); if (is!=null){ is.close(); System.out.println(" Socket Input Stream Closed"); } if(os!=null){ os.close(); System.out.println("Socket Out Closed"); } if (s!=null){ s.close(); System.out.println("Socket Closed"); } } catch(IOException ie){ System.out.println("Socket Close Error"); } }//end finally } } </code></pre> <p>Also here is the code for the client.. Just execute this code for as many times as you want to create multiple client.. </p> <pre><code>// A simple Client Server Protocol .. Client for Echo Server import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.InetAddress; import java.net.Socket; public class NetworkClient { public static void main(String args[]) throws IOException{ InetAddress address=InetAddress.getLocalHost(); Socket s1=null; String line=null; BufferedReader br=null; BufferedReader is=null; PrintWriter os=null; try { s1=new Socket(address, 4445); // You can use static final constant PORT_NUM br= new BufferedReader(new InputStreamReader(System.in)); is=new BufferedReader(new InputStreamReader(s1.getInputStream())); os= new PrintWriter(s1.getOutputStream()); } catch (IOException e){ e.printStackTrace(); System.err.print("IO Exception"); } System.out.println("Client Address : "+address); System.out.println("Enter Data to echo Server ( Enter QUIT to end):"); String response=null; try{ line=br.readLine(); while(line.compareTo("QUIT")!=0){ os.println(line); os.flush(); response=is.readLine(); System.out.println("Server Response : "+response); line=br.readLine(); } } catch(IOException e){ e.printStackTrace(); System.out.println("Socket read Error"); } finally{ is.close();os.close();br.close();s1.close(); System.out.println("Connection Closed"); } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload