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.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...".
Sunday, March 4, 2012
How do I create a client-server socket communication in Android?
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment