client 端代码:
server 端代码,实现多个client并行交互
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 ClientTest {
public static void main(String[] args) throws UnknownHostException, IOException{
Socket client = new Socket("localhost",11111);
BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out = new PrintWriter(client.getOutputStream());
BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));
while (true){
String str = wt.readLine();
out.println(str);
out.flush();
if(str.equals("end")){
break;
}
System.out.println(reader.readLine());
}
client.close();
}
}
server 端代码,实现多个client并行交互
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ServerTest {
static ServerSocket server = null;
public static void main(String[] args) throws IOException {
class Task implements Runnable {
public Socket client;
public Task(Socket client) {
this.client = client;
}
public void run() {
try {
System.out.println(Thread.currentThread().getName());
BufferedReader reader = new BufferedReader(
new InputStreamReader(client.getInputStream()));
PrintWriter writer = new PrintWriter(
client.getOutputStream());
while (true) {
String str = reader.readLine();
System.out.println(str);
writer.println("has receive ...");
writer.flush();
if (str.equals("end")) {
break;
}
}
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
ExecutorService pool = Executors.newFixedThreadPool(10); //使用线程池
server = new ServerSocket(11111);
while (true) {
pool.execute(new Task(server.accept()));
}
}
}