gpt4 book ai didi

Java 数据流和套接字

转载 作者:行者123 更新时间:2023-12-02 13:16:29 25 4
gpt4 key购买 nike

我正在使用套接字使用 .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;

提前谢谢您。

最佳答案

您需要发送回成功/失败代码,并且仅在成功情况下发送下一个名称。

关于Java 数据流和套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43744613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com