package run;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
public class Account {
private static ExecutorService EX = new ThreadPoolExecutor(3,5,
3, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5), Executors.defaultThreadFactory(),
new ThreadPoolExecutor.AbortPolicy());
public static List<Socket> LIST = new ArrayList<>();
public static void main(String[] args) {
try {
System.out.println("====接收端====");
ServerSocket serverSocket = new ServerSocket(8888);
while (true) {
Socket socket = serverSocket.accept();
LIST.add(socket);
Runnable ru = new ServerSocketRead(socket);
EX.execute(ru);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class ServerSocketRead implements Runnable{
private Socket socket;
public ServerSocketRead(Socket socket){
this.socket = socket;
}
@Override
public void run() {
try {
InputStream is = socket.getInputStream();
BufferedReader bf = new BufferedReader(new InputStreamReader(is));
String len;
while ((len = bf.readLine()) != null){
System.out.println(socket.getRemoteSocketAddress() + ": " + len);
Mass(len);
}
} catch (Exception e) {
Account.LIST.remove(socket);
System.out.println(socket.getRemoteSocketAddress() + "已离线");
}
}
public void Mass(String msg) throws IOException {
for (Socket socket1 : Account.LIST) {
PrintStream ps = new PrintStream(socket1.getOutputStream());
ps.println(msg);
ps.flush();
}
}
}
package run;
import java.io.*;
import java.net.Socket;
import java.util.Scanner;
import java.util.concurrent.*;
public class FileDemo {
private static ExecutorService EX = new ThreadPoolExecutor(3,5,3,
TimeUnit.SECONDS,new ArrayBlockingQueue<>(5), Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());
public static void main(String[] args) {
try {
System.out.println("====发送端====");
Scanner sc = new Scanner(System.in)
Socket socket = new Socket("127.0.0.1",8888);;
Runnable ru = new SocketRead(socket);
EX.execute(ru);
OutputStream os = socket.getOutputStream();
PrintWriter pw =new PrintWriter(os);
while (true){
pw.println(sc.nextLine());
pw.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class SocketRead implements Runnable {
private Socket socket;
public SocketRead(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
InputStream is = socket.getInputStream();
BufferedReader bf = new BufferedReader(new InputStreamReader(is));
String len;
while ((len = bf.readLine()) != null) {
System.out.println( socket.getRemoteSocketAddress() + ": " + len);
}
} catch (Exception e) {
System.out.println("您已被服务端剔除");
}
}
}