MyWriter.java(MyReader.java之前执行此)当写入OutputStream写入字节(内部)时,为什么读取的InputStream返回int?
import java.io.*;
import java.net.*;
import java.util.* ;
public class MyWriter {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(1234) ;
System.out.println("Server started...\n\n") ;
Socket s = ss.accept() ;
OutputStream out = s.getOutputStream() ;
Scanner scan = new Scanner(System.in) ;
while(true){
System.out.print("Enter integer (or something else to quit) : ");
try{
int i = scan.nextInt() ;
out.write(i) ;
}catch(RuntimeException rte){
System.out.println("\n\n") ;
rte.printStackTrace() ;
System.out.println("\n\n") ;
break ;
}
}
}
}
MyReader.java(仅执行时,当与MyWriter.java完成)
import java.io.*;
import java.net.*;
import java.util.* ;
public class MyReader {
public static void main(String[] args) throws Exception {
Socket s = new Socket("localhost", 1234) ;
InputStream is = s.getInputStream() ;
int i ;
while((i = is.read()) != -1){
System.out.println("character form : " + (char)i + ", int form : " + i);
}
}
}
问题:MyReader即使我在MyWriter中传递-1,也不会终止。
是否MyWriter终止?它应该打印一个堆栈跟踪,并且该过程应该退出。如果没有,那么套接字仍然打开,阅读器将阻止等待更多输入。 – erickson 2009-10-19 19:52:02
它只会终止一个非整数值(异常处理不当,以使代码指向确切的问题)。否则,它在while(true)循环中。考虑一下,我的输入是只有一个可能的输入-1的整数,MyReader被终止,但它不会终止。 – mogli 2009-10-19 19:57:41