我的广播方法有问题。我和服务器和客户聊天。每个客户端运行一个线程,并有一个自己的输出流套接字在开始时一切正常,但在一些消息后只有一个客户端可以发送而另一个只接收消息..?!我不知道为什么有人有这个想法?一开始都可以发送和接收.. 我无法关闭输出流,因为我得到了一个nullpointerexception,但也许这是错误的? 感谢每一个帮助!
服务器:
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 :(得分:0)
您正在丢失BufferedReader.
预读的数据。不要为每封邮件创建新的流/读者/编写者。在插座的使用寿命中使用相同的插座。