Client Server in java

Client-Server Connection using ObjectOutputStream & ObjectInputStream in JAVA.

In Client/Server applications the server normally listens to a specific port waiting for connection requests from a client.

When a connection request arrives, the client and the server establish a dedicated connection to communicate.

During the connection process, the client is assigned a local port number, and binds a socket to it.

The client talks to the server by writing to the socket and gets information from the server by reading from it.

Similarly, the server gets a new local port number to communicate with the client.

The server also binds a socket to its local port and communicates with the client by reading from and writing to it.

The server uses a specific port dedicated only to listening for connection requests from other clients. It can not use this specific port for communication with the clients.

The client and the server must agree on a protocol. They must agree on the language of the information transferred back and forth through the socket.

The java.net package in the Java development environment provides the class “Socket” which implements the client side and the class “ServerSocket” class which implements the server side of the two-way link.

Server side

import java.io.*;

import java.net.*;

public class Provider{

ServerSocket providerSocket;

Socket connection = null;

ObjectOutputStream out;

ObjectInputStream in;

String message;

Provider(){}

void run()

{

try{

//1. creating a server socket

 

providerSocket = new ServerSocket(2004, 10);

 

//2. Wait for connection

 

System.out.println("Waiting for connection");

 

connection = providerSocket.accept();

 

System.out.println("Connection received from " + connection.getInetAddress().getHostName());

 

//3. get Input and Output streams

 

out = new ObjectOutputStream(connection.getOutputStream());

 

out.flush();

 

in = new ObjectInputStream(connection.getInputStream());

 

sendMessage("Connection successful");

 

//4. The two parts communicate via the input and output streams

 

do{

try{

message = (String)in.readObject();

System.out.println("client>" + message);

 

if (message.equals("bye"))

sendMessage("bye");

}

catch(ClassNotFoundException classnot)

{

System.err.println("Data received in unknown format");

}

 

}while(!message.equals("bye"));

}

catch(IOException ioException){

ioException.printStackTrace();

}

finally{

 

//4: Closing connection

 

try{

in.close();

out.close();

providerSocket.close();

}

catch(IOException ioException){

ioException.printStackTrace();

}

}

}

void sendMessage(String msg)

{

try{

out.writeObject(msg);

out.flush();

System.out.println("server>" + msg);

}

catch(IOException ioException){

ioException.printStackTrace();

}

}

public static void main(String args[])

{

Provider server = new Provider();

while(true){

server.run();

}

}

}

 

Client Side

 

import java.io.*;

import java.net.*;

 

public class Requester{

Socket requestSocket;

 

ObjectOutputStream out;

ObjectInputStream in;

String message;

Requester(){}

void run()

{

try{

 

//1. creating a socket to connect to the server

 

requestSocket = new Socket("localhost", 2004);

System.out.println("Connected to localhost in port 2004");

 

//2. get Input and Output streams

out = new ObjectOutputStream(requestSocket.getOutputStream());

out.flush();

in = new ObjectInputStream(requestSocket.getInputStream());

 

//3: Communicating with the server

 

do{

try{

message = (String)in.readObject();

System.out.println("server>" + message);

sendMessage("Hi my server");

message = "bye";

sendMessage(message);

}

catch(ClassNotFoundException classNot)

{

System.err.println("data received in unknown format");

}

}while(!message.equals("bye")); 

}

catch(UnknownHostException unknownHost)

{

System.err.println("You are trying to connect to an unknown host!");

}

catch(IOException ioException)

{

ioException.printStackTrace();

}

finally

{

 

//4: Closing connection

 

try

{

in.close();

out.close();

requestSocket.close();

}

 

catch(IOException ioException)

{

ioException.printStackTrace();

}

}

}

void sendMessage(String msg)

{

try

{

out.writeObject(msg);

out.flush();

System.out.println("client>" + msg);

}

 

catch(IOException ioException)

{

ioException.printStackTrace();

}

}

public static void main(String args[])

{

Requester client = new Requester();

client.run();

}

}


Output

Image-1.jpg

Image-2.jpg

Next Recommended Reading Youtube Downloader In Java