Java DataStreams and Sockets



我正在使用 .net 使用套接字在Java中编码一个分布式应用程序,我使用套件来编码库,我在服务器和客户端方面遇到了麻烦。

这是一个非常具体的情况。我有一种读取字符串(机场代码(并返回机场数据的方法。首先,我在DatainputStream中编写操作的代码和参数,然后将其发送到服务器。在服务器上,我得到参数并调用该方法。这是问题;如果找不到机场,该方法可以返回null。如何将零值发送给客户端?

我尝试了:

If the value is null 
then 
   inputStream.writeUtf("Null")
   inputStream.flush()
endif

但是当我尝试阅读客户端中的值时,有时我会得到eofexception

这是代码的两个部分,首先是服务器部分:

case com.codAeropuerto:  //aeropuerto(codigo : String): DatoAeropuerto
    String codigoAeropuerto = InStr.readUTF();
    DatoAeropuerto aeropuerto = espacioAereo.aeropuerto(codigoAeropuerto);
    if(aeropuerto==null){  //if the value returned is null
            OutStr.writeUTF("NULL");
            OutStr.flush();
    } else {
            OutStr.writeDouble(aeropuerto.coordX);
            OutStr.writeDouble(aeropuerto.coordY);
            OutStr.writeDouble(aeropuerto.coordZ);
            OutStr.flush();
    }

和客户端部分:

    try {
        sock=new Socket(server_dir,puerto_server);
        //send petition to server
        DataOutputStream outstr = new DataOutputStream(sock.getOutputStream());
        outstr.writeByte(com.codAeropuerto);
        outstr.writeUTF(codigo);
        outstr.flush();
        //return information
        DataInputStream instr = new DataInputStream(sock.getInputStream());
        if(instr.readUTF().equals("NULL")){
            sock.close()
            return salida;
        }
        double coordX = instr.readDouble();
        double coordY = instr.readDouble();
        double coordZ = instr.readDouble();
        salida = new DatoAeropuerto(coordX,coordY,coordZ);
        sock.close();

    } catch (IOException e) {
        System.out.println("Error EspacioAereo_Proxy aeropuerto : socket no se ha podido cerrar");
    } return salida;

预先感谢您。

您需要发送成功/失败代码,仅在成功案例中接下来发送名称。

最新更新