How do I create a client-server socket communication?
Category: java.net, viewed: 2741 time(s).
In this example you'll see how to create a client-server socket communication. The example below consist of two main classes, the ServerSocketExample and the ClientSocketExample. The server application listen to port 7777 at the localhost. When we send a message from the client application the server receive the message and send a reply to the client application.
The communication in this example using the TCP socket, it means that there is a fixed connection line between the client application and the server application.
package org.kodejava.example.net; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.lang.ClassNotFoundException; import java.lang.Runnable; import java.lang.Thread; import java.net.ServerSocket; import java.net.Socket; public class ServerSocketExample { private ServerSocket server; private int port = 7777; public ServerSocketExample() { try { server = new ServerSocket(port); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { ServerSocketExample example = new ServerSocketExample(); example.handleConnection(); } public void handleConnection() { System.out.println("Waiting for client message..."); // // The server do a loop here to accept all connection initiated by the // client application. // while (true) { try { Socket socket = server.accept(); new ConnectionHandler(socket); } catch (IOException e) { e.printStackTrace(); } } } } class ConnectionHandler implements Runnable { private Socket socket; public ConnectionHandler(Socket socket) { this.socket = socket; Thread t = new Thread(this); t.start(); } public void run() { try { // // Read a message sent by client application // ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()); String message = (String) ois.readObject(); System.out.println("Message Received: " + message); // // Send a response information to the client application // ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); oos.writeObject("Hi..."); ois.close(); oos.close(); socket.close(); System.out.println("Waiting for client message..."); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } } package org.kodejava.example.net; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.lang.ClassNotFoundException; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; public class ClientSocketExample { public static void main(String[] args) { try { // // Create a connection to the server socket on the server application // InetAddress host = InetAddress.getLocalHost(); Socket socket = new Socket(host.getHostName(), 7777); // // Send a message to the client application // ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); oos.writeObject("Hello There..."); // // Read and display the response message sent by server application // ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()); String message = (String) ois.readObject(); System.out.println("Message: " + message); ois.close(); oos.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } } |
To test the application you need to start the server application. Each time you run the client application it will send a message "Hello There..." and in turns the server reply with a message "Hi...".
Related Examples
|
|