2015-07-08 4 views
0

У меня проблема с моим широковещательным методом. Я поболтал с сервером и клиентами. Каждый клиент запускает один поток и имеет собственный сокет для выходного потока. В начале все работает нормально, но после нескольких сообщений может отправлять только один клиент, а другой только получает сообщения.?! Я не знаю, почему у кого-то есть идея? В начале оба могут отправлять и получать. Я не могу закрыть выходной поток, потому что тогда я получаю исключение nullpointer, но, возможно, это ошибка? Благодарен за помощь!Один клиент просто прослушивает несколько сообщений: Чат клиентского сервера с сокетами ArrayList outputstreamwriter

Сервер:

public static void broadcastJSON(JSONObject jsonObject, ArrayList<Socket> socketList)throws IOException{ 

     OutputStreamWriter out = null; 
     for(int i=0; i<socketList.size(); i++){ 
      out=new OutputStreamWriter(socketList.get(i).getOutputStream(), "UTF-8"); 
      out.write(jsonObject.toString() + "\n"); 
      out.flush(); 
     } 
    } 

Клиент:

public JSONObject receiveJSON()throws IOException{ 
     BufferedReader in = new BufferedReader(new InputStreamReader(Client.socket.getInputStream(), "UTF-8")); 
     String obje = in.readLine(); 
     JSONObject jsonObject = new JSONObject(obje); 
     return jsonObject; 
} 

ответ

0

Вы теряете данные опережающего чтения по BufferedReader. Не создавать новые потоки/читателей/писателей в сообщение. Используйте те же самые для жизни сокета.

+0

хорошо, я попробую это спасибо! Я думал об этом раньше. в полученном сообщении это должно быть возможно, но как я могу это сделать в широковещательном методе, когда мне нужно выпустить поток для каждого конкретного сокета в socketList. Спасибо за ваш ответ! –

 Смежные вопросы

  • Нет связанных вопросов^_^