Server:
import java.io.*;
import java.math.BigInteger;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
ServerSocket serverSocket;
try {
serverSocket = new ServerSocket(65000);
System.out.println("Sever start...");
while(true)
{
System.out.println("Waiting ");
final Socket activeSocket = serverSocket.accept();
System.out.println("Reveive a connection" + activeSocket);
new Thread(new Runnable() {
@Override
public void run() {
handleClientRequest(activeSocket);
}
}).start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
static void handleClientRequest(Socket socket)
{
BufferedReader socketReader = null;
BufferedWriter socketWriter = null;
try
{
socketReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
socketWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String inMsg = null;
while((inMsg = socketReader.readLine())!=null)
{
System.out.println("Received from client: " + inMsg);
String outMsg = "(echo)" + inMsg + "\n";
socketWriter.write(outMsg);
socketWriter.flush();
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
socket.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}
Client:
import java.io.*;
import java.net.Socket;
public class Main
{
public static void main(String[] args)
{
Socket socket = null;
BufferedWriter socketWriter = null;
BufferedReader socketReader = null;
try
{
socket = new Socket("localhost",65000);
System.out.println("Client start...");
socketReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
socketWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
BufferedReader consolReader = new BufferedReader(new InputStreamReader(System.in));
String promptMsg = "Please enter a message (Bye to quit):";
String outMsg = null;
System.out.println(promptMsg);
while((outMsg=consolReader.readLine()) != null)
{
if(outMsg.equalsIgnoreCase("bye"))
break;
socketWriter.write(outMsg);
socketWriter.write("\n");
socketWriter.flush();
String inMsg = socketReader.readLine();
System.out.println("Server: " + inMsg);
System.out.println();
System.out.print(promptMsg);
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if(socket != null)
{
try
{
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
}