我有这个套接字,当我想使用 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();
}
}