Здравствуйте. Клиенты подключаются по сокету. Есть база. В базе есть записи принадлежащие только определенным клиентам. И если у какого-то клиента появляются данные, мне нужно эти данные отправить только ему, найдя его в ArrayList. Сейчас пробовал хранить чисто сокеты. Но в момент когда я его вытаскиваю из ArrayList и пытаюсь отправить сообщение выскакивает ConnectionClosed. Теперь пробую хранить выходные потоки из каждого сокета. Вообще как это можно реализовать? Помогите кто чем сможет.
Вот что есть у меня на данный момент:
public class MainSocket {
//Главный серверСокет
static ServerSocket serverSocket = null;
static List<Socket> socketList = new ArrayList<>();
static List<PrintWriter> writersFromSocket = new ArrayList<>();
public static void main(String[] args) throws IOException {
System.out.println("start main classa");
serverSocket = new ServerSocket(5552);
//Начинаем ожидать подключение клиентов
while(true){
Socket socket = serverSocket.accept();
PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
socketWriter.add(out);
socketList.add(socket);
System.out.println("список клиентов : " + socketList.size());
System.out.println("ожидание нового подключения");
//Когда есть новое подключение запускаем новый поток для работы с ним
new SecondSocket(socket).start();
for(int i =0;i<socketList.size();i++){
System.out.println(socketList.get(i).getInetAddress());
if(i==6){
Socket s = socketList.get(i);
if(s.isConnected()){
System.out.println("отправка записи к " +i+ "тому клиенту");
socketWriter.get(i).println("лалалала " +i+"тый клиент");
//тут клиенту ничего не приходит.
socketWriter.get(i).flush();
}
}
}
}
}
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости