// File Name GreetingServer.java import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.net.SocketTimeoutException; import java.util.Scanner; public class GreetingServer extends Thread { private ServerSocket serverSocket; public GreetingServer(int port) throws IOException { serverSocket = new ServerSocket(port); serverSocket.setSoTimeout(1000000); } public void run() { final Scanner scanIn = new Scanner(System.in); while (true) { try { System.out.println("SERVER: Waiting for client on port " + serverSocket.getLocalPort() + "..."); Socket server = serverSocket.accept(); System.out.println("SERVER: " + "Game start"); System.out.println("SERVER: Just connected to " + server.getRemoteSocketAddress()); final DataInputStream in = new DataInputStream(server.getInputStream()); System.out.println("CLIENT: " + in.readUTF()); final DataOutputStream out = new DataOutputStream(server.getOutputStream()); out.writeUTF("Thank you for connecting to " + server.getLocalSocketAddress() + "\n..Welcome...!"); new Thread() { public void run() { try { while (true) { String msg = in.readUTF(); if(!msg.startsWith(" I received ")) { out.writeUTF(" I received \"" + msg.replace("\"", "") + "\""); } System.out.println("CLIENT: " + msg); } } catch (IOException e) { // TODO Auto-generated catch block System.out.println("CLIENT closed"); } }; }.start(); System.out.println("Enter message : "); String sWhatever = scanIn.nextLine(); while (!sWhatever.equalsIgnoreCase("q")) { System.out.println("SERVER: " + sWhatever); out.writeUTF("\"" + sWhatever + "\""); System.out.println("Enter message : "); sWhatever = scanIn.nextLine(); } out.writeUTF("q"); server.close(); System.out.println("SERVER: Closed" + "Game over"); } catch (SocketTimeoutException s) { System.out.println("Socket timed out!"); break; } catch (IOException e) { System.out.println("SERVER: Closed" + "Game over"); break; } } scanIn.close(); } public static void main(String[] args) { int port = Integer.parseInt(args[0]); try { Thread t = new GreetingServer(port); t.start(); } catch (IOException e) { e.printStackTrace(); } } }