The server



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();

}

}

}






======================================================================================================================



The client


  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();

}

}