❮ Previous Next ❯

Two way communication between Server and Client

It is possible to send data from the server and receive the response from the client. Similarly, the client can also send and receive the data to and fro. For this purpose, we need additional streams both at server and client. For example, to receive the data into the server, it is a better idea to use BufferedReader as:

InputStreamobj=s.getInputStream();

BufferedReaderbr=new BufferedReader(new InputStreamReader(obj);

Then read() or readLine() methods of BufferedReader class can be used to read data. To send data from the client, we can take the help of DataOutputStream as:
OutputStreamobj=s.getOutputStream();
DataOutPutStream dos=new DataOutputStream(obj);

Then writeBytes() method of DataOutputStream can be used to send strings in the form of group of bytes.
Program:
//Server2 – A server that receives data and sends data
import java.io.*;
import java.net.*;
class Himalaya
{
            public static void main(String args[])throws exception
            {
                        //Create server socket
                        ServerSocketss=new ServerSocket(888);
                        //Connect it to Client socket
                        Socket s=ss.accept();
                        System.out.println(“Connection established”);
                        //to send data to the client
                        PrintStreamps=new PrintStream(s.getOutputStream());
                        //to read data coming from the client
                        BufferedReaderbr=new BufferedReader(new                                                                                         InputStreamReader(s.getInputStream()));
                        //to read data from the keyboard
                        BufferedReader kb=new BufferedReader(new inputStreamReader(System.in));
                        while(true) //server executes continuously
                        {
                                    String str,str1;
                                    //repeat as long as client does not send null string
                                    while((str=br.readLine()) !=null) //read from client
                                    {
                                                System.out.println(str);
                                                str1=kb.readLine();
                                                ps.println(str1); //send to client
                                    }
                                    // close connection
                                    ps.close();
                                    br.close();
                                    kb.close();
                                    ss.close();
                                    s.close();
                                    System.exit(0); //terminate appliacation
                        } //end of while
            }
}
Output:
D:\rnr>javac Himalaya.java
D:\rnr>

Program:
Write a program to create a client which first connects to a server, then starts the communication by sending a string to the server. The server sends response to the client. When ‘exit’ is typed at client side, the program terminates.
//Client2 – a client that sends data and receives also
import java.io.*;
import java.net.*;
class Client2
{
            public static void main(String args[])throws Exception
            {
                        // create client socket
                        Socket s=new Socket(“localhost”,888);
                        // to send data to the server
                        DataOutputStream dos=new DataOutputStream(s.getOutputStream());
                        // to read data coming from the server
                        BufferedReaderbr=new BufferedReader( new InputStreamReader(s.getInputStream)));
                        // to read data from the keyboard
                        BufferedReader kb= new BufferedReader( new InputStreamReader(System.in));
                        String str,str1;
                        // repeat as long as exit is not typed at client
                        while(!(str=kb.readLine()).equals(“exit”))
                        {
                                    dos.writeBytes(str+”\n”);   // send to server
                                    str1=br.readLine();  // receive from server
                                    System.out.println(str1);
                        }
                        //close connection
                        dos.close();
                        br.close();
                        kb.close();
                        s.close();
            }
} Output:
D:\rnr>javac Client2.java
D:\rnr>
Run the server2.java and client2.java in two dos windows.
See the output while running these programs.

❮ Previous Next ❯



  Tutorials

Popular Links

Contact Us

address Plot No-741,2ND Floor
Opp. Bhagabati Temple,Jayadev Vihar
      Bhubaneswar-751013
      Email: info@silantechnology.com
      Phone: 0674-2361252
address
39877, sundale dr, apt#101, Fremont, California 94538, USA
       Phone: +1(262)388-7619

facebook twitter google linked in

© 2018 Silan Technology. All Rights Reserved