一个客户端只是在几条消息后收听:客户端服务器与ArrayList套接字输出流写入器聊天

时间:2015-07-08 21:46:41

标签: multithreading sockets server chat outputstream

我的广播方法有问题。我和服务器和客户聊天。每个客户端运行一个线程,并有一个自己的输出流套接字在开始时一切正常,但在一些消息后只有一个客户端可以发送而另一个只接收消息..?!我不知道为什么有人有这个想法?一开始都可以发送和接收.. 我无法关闭输出流,因为我得到了一个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;
}

1 个答案:

答案 0 :(得分:0)

您正在丢失BufferedReader.预读的数据。不要为每封邮件创建新的流/读者/编写者。在插座的使用寿命中使用相同的插座。