El ejemplo EchoTest utiliza dos veces el m�todo DataInputStream.readLine. Este m�todo ha sido anulado en el JDK 1.1 porque no convierte correctamente los bytes en caracteres. La mayor�a de los programas que utilizan DataInputStream.readLine pueden hacer un cambio sencillo para utilizar el mismo m�todo de la nueva clase BufferedReader. Simplemente reemplaza el c�digo de:
DataInputStream d = new DataInputStream(in);
con este:
BufferedReader d = new BufferedReader(new InputStreamReader(in));
EchoTest es uno de esos programas en los que se puede realizar este sencillo cambio. Aqu� tienes la nueva versi�n de EchoTest:
import java.io.*;
import java.net.*;
public class EchoTest {
public static void main(String[] args) {
Socket echoSocket = null;
DataOutputStream os = null;
BufferedReader br = null;
BufferedReader stdIn = new BufferedReader(
new InputStreamReader(System.in));
try {
echoSocket = new Socket("taranis", 7);
os = new DataOutputStream(echoSocket.getOutputStream());
br = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host: taranis");
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to: taranis");
}
if (echoSocket != null && os != null && br != null) {
try {
String userInput;
while ((userInput = stdIn.readLine()) != null) {
os.writeBytes(userInput);
os.writeByte('\n');
System.out.println("echo: " + br.readLine());
}
os.close();
br.close();
echoSocket.close();
} catch (IOException e) {
System.err.println("I/O failed on the connection to: taranis");
}
}
}
}