0
我編碼使用.NET庫使用套接字在Java中的分佈式應用程序,我有與服務器和客戶端的麻煩。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;
預先感謝您。
'返回薩利達; sock.close();' - 這個不能編譯。 'sock.close()'是一個無法訪問的語句,編譯器會抱怨它。 –
@MCEmperor對不起,我在旅途中改編了它,現在修正了它,我還在客戶端部分添加了sock.close()(如果值爲null) – Setekorrales