TCP线程池通信
package TCP04;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Client {
private static Scanner in;
public static void main(String[] args) {
System.out.println("----------客户端启动成功----------");
Socket socket;
try {
socket = new Socket("127.0.0.1",9999);
OutputStream os=socket.getOutputStream();
PrintStream ps=new PrintStream(os);
in = new Scanner(System.in);
while(true) {
System.out.println("请输入您要发送的信息:");
String s=in.nextLine();
ps.println(s);
ps.flush();
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package TCP04;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws Exception {
System.out.println("----------服务端启动成功----------");
ServerSocket ss=new ServerSocket(9999);
HandlerSocketThreadPool handlerSocketThreadPool=new HandlerSocketThreadPool(3,100);
while(true) {
Socket socket=ss.accept();
System.out.println("有人上线了");
handlerSocketThreadPool.execute(new ReaderClientRunnable(socket));
}
}
}
package TCP04;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class HandlerSocketThreadPool {
private ExecutorService executor;
public HandlerSocketThreadPool(int maxPoolSize, int queueSize) {
executor = new ThreadPoolExecutor(maxPoolSize, maxPoolSize, 120L, TimeUnit.SECONDS,
new ArrayBlockingQueue<Runnable>(queueSize));
}
public void execute(Runnable task) {
this.executor.execute(task);
}
}
package TCP04;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.Socket;
public class ReaderClientRunnable implements Runnable{
private Socket socket;
public ReaderClientRunnable(Socket socket) {
this.socket=socket;
}
public void run() {
InputStream is;
try {
System.out.println(socket.getLocalAddress()+"上线了!");
is = socket.getInputStream();
Reader ris=new InputStreamReader(is);
BufferedReader bis=new BufferedReader(ris);
String line;
while((line=bis.readLine())!=null) {
System.out.println(line);
}
} catch (IOException e) {
System.out.println(socket.getRemoteSocketAddress()+"下线了~~~");
}
}
}
|