0
私はJavaで分散アプリケーションをコード化しています。.netライブラリを使用しており、サーバーとクライアントに問題があります。Javaデータストリームとソケット
非常に具体的なケースです。私は文字列(空港コード)を読み取り、空港データを返すメソッドを持っています。 まず、操作のコードとパラメータをDataInputStreamに書き込み、それをサーバーに送信します。サーバー上で私はparametresを取得し、メソッドを呼び出します。 ここに問題があります。空港が見つからない場合、メソッドは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;
ありがとうございます。
'return salida; sock.close(); ' - これはコンパイルされません。 'sock.close()'は到達不能な文であり、コンパイラは文句を言うでしょう。 –
@MCEmperor申し訳ありませんが、私は外出先でそれを修正しました。クライアントの部分にsock.close()を追加しました(値がnullの場合) – Setekorrales