A Simple Client Server Socket Program

We will see how to communicate between a server and a client using simple network programming using sockets. You can get started with socket programming. Also, a simple client server program might be needed in many situations; you can just copy paste the basic code below and add to it.

We will create a simple server that accepts a client and sends a string message to the client. Client simply prints the message from server in the console.

 

Basic steps to create a server

  1. At the server side, create a server socket with some port number as:
    ServerSocket ss=new ServerSocket(777);
  2. Make the server wait till a client accepts connection, using accept() method as:
    Socket s=ss.accept();
  3. Get an OutputStream object using getOutputStream() method of Socket class. This stream is used by the socket to send data to the client.
    OutputStream os=s.getOutputStream();
  4. Send data to the client using a PrintStream wrapper:
    PrintStream ps=new PrintStream(os);
    ps.println(str);
  5. Finally, close the ServerSocket, Socket and PrintStream objects.
    ss.close();
    s.close();
    ps.close();

 

Basic steps to create a client

  1. Create a socket at the client side specifying the server ip addresss and port as:
    Socket s =new Socket(“IPaddress”,port_number);
  2. Add InputStream to the Socket to receive data on the InputStream
    InputStream is=s.getInputStream();
  3. Read the data from the Socket into the client using BufferedReader wrapper as
    BufferedReader br=new BufferedReader(new InputStreamReader(is));
  4. Read data from the BufferedReader using read() or readLine() methods.
    str=br.readLine();
  5. Finally, close the BufferedReader and the Socket
    br.close();
    s.close();

 

Code

Server.java

import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws IOException {

        System.out.println("Server");
        ServerSocket ss = new ServerSocket(7777);
        Socket s = ss.accept();
        OutputStream os = s.getOutputStream();
        PrintStream ps = new PrintStream(os);
        ps.println("Hello from server");

        ss.close();
        s.close();
        ps.close();
    }
}
 

Client.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {
    public static void main(String[] args) throws UnknownHostException,
            IOException {
        Socket s = new Socket("mchej01", 7777);
        InputStream is = s.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        System.out.println("message:" + br.readLine());
        br.close();
        s.close();
    }
}

 

Executing the code

  • Compile both classes
  • Run the Server first and you can see the server waiting for client.
  • Now run the Client and see the message sent from server print in the console.

 

This is a very simple program, but still let me know if you find any issues or have any doubts,

Quick Notes Finder Tags

Activities (1) advanced java (1) agile (3) App Servers (6) archived notes (2) Arrays (1) Best Practices (12) Best Practices (Design) (3) Best Practices (Java) (7) Best Practices (Java EE) (1) BigData (3) Chars & Encodings (6) coding problems (2) Collections (15) contests (3) Core Java (All) (55) course plan (2) Database (12) Design patterns (8) dev tools (3) downloads (2) eclipse (9) Essentials (1) examples (14) Exception (1) Exceptions (4) Exercise (1) exercises (6) Getting Started (18) Groovy (2) hadoop (4) hibernate (77) hibernate interview questions (6) History (1) Hot book (5) http monitoring (2) Inheritance (4) intellij (1) java 8 notes (4) Java 9 (1) Java Concepts (7) Java Core (9) java ee exercises (1) java ee interview questions (2) Java Elements (16) Java Environment (1) Java Features (4) java interview points (4) java interview questions (4) javajee initiatives (1) javajee thoughts (3) Java Performance (6) Java Programmer 1 (11) Java Programmer 2 (7) Javascript Frameworks (1) Java SE Professional (1) JPA 1 - Module (6) JPA 1 - Modules (1) JSP (1) Legacy Java (1) linked list (3) maven (1) Multithreading (16) NFR (1) No SQL (1) Object Oriented (9) OCPJP (4) OCPWCD (1) OOAD (3) Operators (4) Overloading (2) Overriding (2) Overviews (1) policies (1) programming (1) Quartz Scheduler (1) Quizzes (17) RabbitMQ (1) references (2) restful web service (3) Searching (1) security (10) Servlets (8) Servlets and JSP (31) Site Usage Guidelines (1) Sorting (1) source code management (1) spring (4) spring boot (3) Spring Examples (1) Spring Features (1) spring jpa (1) Stack (1) Streams & IO (3) Strings (11) SW Developer Tools (2) testing (1) troubleshooting (1) user interface (1) vxml (8) web services (1) Web Technologies (1) Web Technology Books (1) youtube (1)