使用java sockets读取消息后如何发送?

问题描述 投票:0回答:0

我有这个套接字,当我想使用 StreamOutput 发送消息时,我已经使用了 inputOutstream,首先它收到一条消息,然后我分析了它,最后如果它有“错误”,我必须将它们发送回客户端.

如果我删除与 PrintWriter 相关的所有内容以及发送内容的部分,则发送消息。

代码如下:

    public static void main(String[] args) throws IOException, JSONException {
        sjf.setVisible(true);

        logger.info("Starting server...");
        sjf.agregarLog("Iniciando servidor");

        ServerSocket serverSocket = new ServerSocket(8080);
        logger.info("Server started on port {}", serverSocket.getLocalPort());

        while (true) {
            Socket clientSocket = serverSocket.accept();
            logger.info("Accepted connection from {}", clientSocket.getInetAddress().getHostAddress());
            sjf.agregarLog("Se acepto conexion");
            
             // Create a PrintWriter and write output data
            OutputStream outputStream = clientSocket.getOutputStream();
            PrintWriter printWriter = new PrintWriter(outputStream, true);

            BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            

            StringBuilder messageBuilder = new StringBuilder(); // Usamos un StringBuilder para concatenar todas las
            // líneas
            String line;
            while ((line = reader.readLine()) != null) { // Leer todas las líneas disponibles
                messageBuilder.append(line);
                messageBuilder.append("\n"); // Agregar el carácter '\n' de vuelta para separar las líneas
            }
            String message = messageBuilder.toString(); // Convertir el StringBuilder a una cadena

            logger.info("Received message from {}: {}", clientSocket.getInetAddress().getHostAddress(), message);
            peti = message;
            sjf.agregarLog(peti);

            // Escribimos el JSON a un archivo
            File file = new File("/archivo.json");
            PrintWriter fileWriter = new PrintWriter(file);
            fileWriter.write(message);
            fileWriter.close();

            // analizar
            sjf.agregarLog("Se mando nuevo mensaje");
            aux = false;
            lista = new Lista(); // reiniciar lista de errores
            analizarMensaje();
           
// this is the part that makes the code don't work!
            if (aux == true) {
                printWriter.println(xml + "\n");
            } else {
                printWriter.println("THERES NO ERRORS YET" +"\n" );
            }
            printWriter.flush(); // flush the PrintWriter to ensure all data is sent
            printWriter.close();

        }

    }
java sockets inputstream outputstream printwriter
© www.soinside.com 2019 - 2024. All rights reserved.