Client.java
import java.io.*;
import java.net.*;
public class Client {
private static Socket client;
private static int PORT = 10000;
private static ObjectInputStream input;
private static ObjectOutputStream output;
public static void connectToServer() {
try {
System.out.println("connectToServer()");
client = new Socket("127.0.0.1", PORT);
} catch (Exception e) {
System.out.println("Exception: " + e);
}
}
public static void getStream() {
try {
System.out.println("getStream()");
output = new ObjectOutputStream(client.getOutputStream());
output.flush();
input = new ObjectInputStream(client.getInputStream());
} catch (Exception e) {
System.out.println("Exception: " + e);
}
}
public static void processConnection() {
try {
System.out.println("processConnection()");
String message = "Client Connected";
do {
message = (String) input.readObject();
System.out.println("Message: " + message);
sendData("Message 1");
sendData("Message 2");
sendData("TERMINATE");
} while (!message.equals("TERMINATE"));
} catch (Exception e) {
System.out.println("Exception: " + e);
}
}
public static void closeConnection() {
try {
System.out.println("closeConnection()");
output.close();
input.close();
client.close();
} catch (Exception e) {
System.out.println("Exception: " + e);
}
}
private static void sendData(String message) {
try {
output.writeObject(message);
output.flush();
} catch (Exception e) {
System.out.println("Exception: " + e);
}
}
public static void runClient() {
System.out.println("runServer()");
try {
connectToServer();
getStream();
processConnection();
closeConnection();
} catch (Exception e) {
System.out.println("Exception: " + e);
}
}
public static void main(String args[]) {
System.out.println("Client - Main()");
runClient();
}
}
Server.java
import java.io.*;
import java.net.*;
public class Server {
private static ServerSocket server;
private static Socket connection;
private static int PORT = 10000;
private static ObjectInputStream input;
private static ObjectOutputStream output;
private static int counter = 0;
public static void waitForConnection() {
try {
System.out.println("waitForConnectcion()");
connection = server.accept();
} catch (Exception e) {
System.out.println("Exception: " + e);
}
}
public static void getStream() {
try {
System.out.println("getStream()");
output = new ObjectOutputStream(connection.getOutputStream());
output.flush();
input = new ObjectInputStream(connection.getInputStream());
} catch (Exception e) {
System.out.println("Exception: " + e);
}
}
public static void processConnection() {
try {
System.out.println("processConnection()");
String message = "Server Connected";
output.writeObject(message);
output.flush();
do {
message = (String) input.readObject();
System.out.println("Message: " + message);
} while (!message.equals("TERMINATE"));
} catch (Exception e) {
System.out.println("Exception: " + e);
}
}
public static void closeConnection() {
try {
System.out.println("closeConnection()");
output.close();
input.close();
connection.close();
} catch (Exception e) {
System.out.println("Exception: " + e);
}
}
public static void runServer() {
System.out.println("runServer()");
try {
server = new ServerSocket(PORT);
while (true) {
waitForConnection();
getStream();
processConnection();
closeConnection();
counter++;
}
} catch (Exception e) {
System.out.println("Exception: " + e);
}
}
public static void main(String args[]) {
System.out.println("Server - Main()");
runServer();
}
}
Output Server
waitForConnectcion()
getStream()
processConnection()
Message: Message 1
Message: Message 2
Message: TERMINATE
closeConnection()
waitForConnectcion()
Output Client
runServer()
connectToServer()
getStream()
processConnection()
Message: Server Connected
Exception: java.io.EOFException
closeConnection()