package UsefulSocket;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
public class SocketServer {
private static ServerSocket serverSocket = null;
public static ArrayList<Socket> socketList = new ArrayList<>();
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
serverSocket = new ServerSocket(4000);
while (true) {
Socket s = serverSocket.accept();
socketList.add(s);
new Thread(new UserThread(s, socketList)).start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
package UsefulSocket;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.ArrayList;
public class UserThread implements Runnable{
ArrayList<Socket> socketList;
Socket socket;
InputStream receive;
OutputStream send;
public UserThread(Socket s, ArrayList<Socket> sockets) {
socketList = sockets;
this.socket = s;
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
int len;
byte[] b = new byte[1024 * 3];
receive = socket.getInputStream();
send = socket.getOutputStream();
while (true) {
while ((len = receive.read(b)) != -1) {
for (Socket sk : socketList) {
try {
if (sk.equals(socket)) {
continue;
}
OutputStream outputStream = sk.getOutputStream();
outputStream.write(b);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}