tcpServer:
public class MyTcpServer implements Runnable {
private ServerSocket serverSocket;
private ExecutorService pool = Executors.newCachedThreadPool();
public MyTcpServer(int port) throws IOException {
serverSocket = new ServerSocket(port);
}
@Override
public void run() {
while (true) {
try {
Socket socket = serverSocket.accept();
pool.execute(new ClientHandler(socket));
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
处理client连接请求的handler:
public class ClientHandler implements Runnable {
private Socket socket;
public ClientHandler(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try (Socket s = socket) {
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream(), "UTF-8"));
PrintWriter out = new PrintWriter(new OutputStreamWriter(s.getOutputStream(), "UTF-8"), true);
String line = null;
while ((line = in.readLine()) != null) {
out.println(line.toUpperCase());
out.flush();
if (line.contains("bye"))
break;
}
in.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
tcpClient:
public class MyTcpClient implements Runnable {
private Socket socket;
public MyTcpClient(String ip, int port) throws IOException {
socket = new Socket(ip, port);
}
@Override
public void run() {
try (Socket s = socket) {
PrintWriter out = new PrintWriter(new OutputStreamWriter(
s.getOutputStream(), "UTF-8"), true);
BufferedReader in = new BufferedReader(new InputStreamReader(
s.getInputStream(), "UTF-8"));
Scanner console=new Scanner(System.in);
String line = null;
while ((line = console.nextLine() )!= null) {
if (line.contains("BYE")) {
System.out.println(" exit.");
break;
}
out.println(line);
out.flush();
System.out.println(in.readLine());
}
System.out.println(" exit22222.");
console.close();
in.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
启动类:
public class TestTcp {
public static void main(String[] args) throws IOException, InterruptedException {
MyTcpServer server = new MyTcpServer(1234);
new Thread(server).start();
MyTcpClient client = new MyTcpClient("127.0.0.1", 1234);
new Thread(client).start();
}
}