0

我正在通过 XML 发送登录信息,并收到以下错误:

org.xml.sax.SAXParseException: Premature end of file.

我的 XML 文件是:

<?xml version="1.0" encoding="UTF-8"?>
<info>
  <miniInfo>
    <nombre>chichca</nombre>
    <password>TopSecret</password>
  </miniInfo>
</info>

这将作为字符串发送到服务器。服务器应该将其添加到 XML 文件中。

坏掉的代码如下:

public void login() {
  mensaje = com.getMensaje(); // para que lo que me llegue sea igual a lo que meto en el xml
  pass = com.getPass();
  if (mensaje == null || pass == null) {
    println("aaaaaaaaaaaaaaaaaaaaaaaaaaaa");
  }
  else {
    //XML [] recorrido = usuario.getChildren();  //me recorre los hijos que son miniInfo, donde guardo names y pass

    for (int i=0; i < children.length; i++) {
      XML usuarios = children[i];
      //println("cantidad de miniinfo = " + children.length);
      try {

        //creo un nuevo arreglo
        XML [] hijos  = usuarios.getChildren();//obtengo los hijos de recorrido nombre y pass
        for (int j=0;  j < hijos.length; j++) {

          XML nombre = hijos[0];
          println("nombre = " + nombre );
          String nombreText = nombre.getContent();
          println("contenido = " + nombreText);
          println("lo que llego" + mensaje);
          XML passwrod = hijos[1];
          String passwordText = passwrod.getContent();

          //comparacion del nombre
          if ( pass == passwrod.getContent()) {
            println("INGRESOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO");
          }//cierre  comparacion del nombre
        }
      }
      catch(Exception e) {
        println("ERROR EN LOGIN" + e);
      }
    }
  }
}//cierre del login

我检查了 XML 和空变量的问题;并尝试过flush();没有成功。

这是我的客户代码:

(主要的)

Comunicacion com;

void setup(){
 size(300,300); 
 com = new Comunicacion();
 com.start();
}


void draw(){
  background(200);

}

void mousePressed(){
 com.enviar(); 
}

void keyPressed(){
 if(key == 'e'){
  com.enviarVerificacion();
 } 




import java.net.*;
import java.io.*;

public class Comunicacion extends Thread {
  String mensaje="chichca";
  String pass = "TopSecret";
  String m = "loginVerificacion";
  String n = "loginPass88888";
  Socket socket;
  int port;
  DataInputStream lectura; // leer datos que entran
  DataOutputStream escritura; //escribir datos que salen
  public Comunicacion() {

    try {
      port = 5000;
      socket = new Socket(InetAddress.getLocalHost(), port);
      escritura = new DataOutputStream(socket.getOutputStream());
      println("se conecto el cliente");
    }
    catch(IOException e) {
      println("ERROR creacion comunicacion");
    }
  }//constructor

  public void run() {
    while (true) {
      try {
        sleep(50);
      }
      catch(Exception e) {
        println("ERROR RUN cliente");
      }
    }
  }

  public void enviar() {
    try{
    escritura.writeUTF(mensaje);
    println("cliente envio " + mensaje);

    escritura.writeUTF(pass);
    println("el clieunte envio de pass " + pass );

    escritura.flush();
    //escritura.close();
    }
    catch(IOException e){
     println("EEROR al enviar desde el cliente"); 
    }
  }//cierre envair


  ///////////////////---------------------------------------------


    public void enviarVerificacion() {
    try{
    escritura.writeUTF(m);
    println("cliente envio " + m);

    escritura.writeUTF(n);
    println("el clieunte envio de pass " + n );

    escritura.flush();
    }
    catch(IOException e){
     println("EEROR al enviar desde el cliente"); 
    }
  }//cierre envair
}//final clase

这是我的服务器代码(两个类):

(主要的)

Informacion info;
void setup(){
 size(300,300); 
 info = new Informacion();
}


void draw(){
  info.admon();
}


import java.net.*;
import java.io.*;

public class Comunicacion extends Thread {
  Socket socket;
  ServerSocket serverSocket;
  DataInputStream lectura;
  int port;
  String  mensaje="";
  String pass="";
  boolean controlador = false;

  public Comunicacion() {
    port = 5000;
    try {
      serverSocket = new ServerSocket(port);
      socket = serverSocket.accept();
      lectura = new DataInputStream(socket.getInputStream());
      println("server se coencto");
    }
    catch(IOException e) {
      println("ERROR COMUNICACION SERVER");
    }
  }

  public void run() {
    while (true) {
      try {
        recibir();
        sleep(50);
      }

      catch(Exception e) {
        println("error en el server run");
      }
    }
  }


  public void recibir() {
    try {
      mensaje = lectura.readUTF();
      println("serverrrrrrrr reibio " + mensaje);

      pass = lectura.readUTF();
      println("el  serverrrrrrrrr recibir de pass " + pass);

      if (controlador == false) {
        controlador = true;
      }
    }
    catch(IOException e) {
      println("ERROR del server al recibir" + e);
    }
  }


  public boolean getControlador() {
    return controlador;
  }

  public void setControlador(boolean c) {
    controlador = c;
  }

  public String getMensaje() {
    return mensaje;
  }

  public String getPass() {
    return pass;
  }
}//cierre clase

XML 类

public class Informacion {

  XML usuario;
  //XML miniInfo;
  Comunicacion com;
  String mensaje="";
  String pass ="";
  XML [] children;


  public Informacion() {

    com = new Comunicacion();
    com.start();

    usuario = loadXML("data/info.xml");
    children = usuario.getChildren("miniInfo"); //recorro los hijos que hay
  }
  //-------------------------------------

  public  void admon() {
    if (com.getControlador()) {
      registrarse();
      login();
      com.setControlador(false);
    }
  }

  //------------------

  public void registrarse() {

    try {
      mensaje = com.getMensaje(); // para que lo que me llegue sea igual a lo que meto en el xml
      pass = com.getPass();
      println("mensaje "+ mensaje);


      XML miniInfo = new XML ("miniInfo");

      //para agregar el nombre del usuario
      XML nombreXml = new XML("nombre");
      String nombreActual = miniInfo.getContent();
      nombreXml.setContent(mensaje);

      //para agregar las contraseña
      XML passwordXml = new XML("password");
      String passwordActual = miniInfo.getContent();
      passwordXml.setContent(pass);

      miniInfo.addChild(nombreXml);
      miniInfo.addChild(passwordXml);
      usuario.addChild(miniInfo);

      saveXML(usuario, "data/info.xml");
      //println(usuario);
    }
    catch(Exception e) {
    }
  }
  //-------------------------------------------------
  //-------------------------------------------------

  public void login() {
    mensaje = com.getMensaje(); // para que lo que me llegue sea igual a lo que meto en el xml
    pass = com.getPass();
    if (mensaje == null || pass == null) {
      println("aaaaaaaaaaaaaaaaaaaaaaaaaaaa");
    }
    else {
      //XML [] recorrido = usuario.getChildren();  //me recorre los hijos que son miniInfo, donde guardo names y pass

      for (int i=0; i < children.length; i++) {
        XML usuarios = children[i];
        //println("cantidad de miniinfo = " + children.length);
        try {

          //creo un nuevo arreglo
          XML [] hijos  = usuarios.getChildren();//obtengo los hijos de recorrido nombre y pass
          for (int j=0;  j < hijos.length; j++) {

            XML nombre = hijos[0];
            println("nombre = " + nombre );
            String nombreText = nombre.getContent();
            println("contenido = " + nombreText);
            println("lo que llego" + mensaje);
            XML passwrod = hijos[1];
            String passwordText = passwrod.getContent();

            //comparacion del nombre
            if ( pass == passwrod.getContent()) {
              println("INGRESOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO");
            }//cierre  comparacion del nombre
          }
        }
        catch(Exception e) {
          println("ERROR EN LOGIN" + e);
        }
      }
    }
  }//cierre del login
}//informacion
4

0 回答 0