Server.java
package com.simonftxy.core;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server extends ServerSocket {
public Server(int serverPort) throws IOException {
super(serverPort);
try {
while (true) {
Socket socket = accept();
if (socket == null) {
System.out.println("connect fail");
} else {
System.out.println("Socket connected");
new ServerThread(socket);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
close();
}
}
// inner class ServerThread
class ServerThread extends Thread {
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public ServerThread(Socket socket) throws IOException {
this.socket = socket;
in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
out = new PrintWriter(socket.getOutputStream(), true);
start();
out.println("connect");
}
public void run() {
// Communicate with client until "bye" received.
try {
while (true) {
String line = in.readLine();
if ("bye".equalsIgnoreCase(line)) {
break;
}
System.out.println("Received message: " + line);
String msg = "\"" + line + "\" has been accepted by server";
out.println(msg);
out.flush();
}
out.close();
in.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws IOException {
new Server(10008);
}
}
Client.java
package com.simonftxy.core;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
private Socket socket;
private BufferedReader reader;
private PrintWriter writer;
public Client(int serverPort) {
try {
socket = new Socket("127.0.0.1", 10008);
reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
writer = new PrintWriter(socket.getOutputStream());
// Communicate with server until "bye" input.
while (true) {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String msg = in.readLine();
writer.println(msg);
writer.flush();
if ("bye".equalsIgnoreCase(msg)) {
break;
}
String received = reader.readLine();
System.out.println(received);
}
writer.close();
reader.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Client(10008);
}
}