服务端
public class Server {
public static void main(String[] args) {
try {// 建立服务器连接
ArrayList<Socket> list = new ArrayList<Socket>();
ServerSocket server = new ServerSocket(8000);
while (true) {
// 等待客户连接
Socket socket = server.accept();
list.add(socket);
Accpetss accept = new Accpetss(socket, list);
Sends sends = new Sends(list);
Thread t1 = new Thread(accept);
Thread t2 = new Thread(sends);
t1.start();
t2.start();
}
// socket.close();
// server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class Accpetss implements Runnable {
ArrayList<Socket> list = null;
Socket socket = null;
public Accpetss(Socket _socket, ArrayList<Socket> _list) {
this.socket = _socket;
this.list = _list;
}
@Override
public void run() {
try {
while (true) {
DataInputStream in = new DataInputStream(this.socket.getInputStream());
String msg = in.readUTF();
System.out.println(msg);
for (Socket s : this.list) {
if (s != this.socket) {
DataOutputStream out = new DataOutputStream(s.getOutputStream());
out.writeUTF(msg);
}
}
}
} catch (IOException e) {
// TODO: handle exception
}
}
}
class Sends implements Runnable {
ArrayList<Socket> list;
public Sends(ArrayList<Socket> _list) {
this.list = _list;
}
public void run() {
try {
while (true) {
Scanner scaner = new Scanner(System.in);
String s = scaner.next();
for (Socket so : this.list) {
DataOutputStream out = new DataOutputStream(so.getOutputStream());
out.writeUTF(s);
}
}
} catch (IOException e) {
// TODO: handle exception
}
}
}
public class Client{
public static void main(String[] args) throws IOException{
try {
// 连接到服务器
Socket socket = new Socket("127.0.0.1", 8000);
Accpet accept = new Accpet(socket);
Send send = new Send(socket);
Thread t1 = new Thread(accept,"server_accept");
Thread t2 = new Thread(send,"server_send");
t1.start();
t2.start();
// socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端
class Accpet implements Runnable{
Socket socket = null;
public Accpet(Socket _socket) {
socket = _socket;
}
@Override
public void run() {
try {
DataInputStream in = new DataInputStream(socket.getInputStream());
while (true) {
String msg = in.readUTF();
System.out.println(msg);
}
} catch (IOException e) {
//TODO: handle exception
}
}
}
class Send implements Runnable{
Socket socket = null;
public Send(Socket _socket) {
socket = _socket;
}
public void run() {
try {
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
Scanner scaner = new Scanner(System.in);
while (true) {
out.writeUTF(scaner.next());
}
} catch (IOException e) {
//TODO: handle exception
}
}
}