Inputstream是以单字节为基础的,他读出来是一系列字节的对象,而Reader是用来处理双字节的unicode的字符,这是两者的区别,至于你的具体的情况就要看了,没分析国,我也不知道为什么

解决方案 »

  1.   

    因为在程序里是这样使用读入的数据的
    tempstr=Din.readLine();
    接下去所有的处理与tempstr有关,我觉得除非两种方法生成的tempstr不同,否则结果应该是一样的。
      

  2.   

    你用的DataOutputStream里的什么方法传递String的?
      

  3.   

    传给客户端是这样的
    DataOutputStream Dout =
     new DataOutputStream(ClientSocket.getOutputStream());
    String str = Din.readLine();
    String tempStr = new String(str+"\r\n");
    Dout.writeBytes(tempStr);
      

  4.   

    DataOutputStream不能写String, writeByte与readline不能对应使用。
    改成这样试试:
    PrintStream Dout =
     new PrintStream (ClientSocket.getOutputStream(),true);
    String str = Din.readLine();
    Dout.println(str );
      

  5.   

    问题找到了,源程序中因为要分析Html头信息,所以头信息部分用DataInputStream.readLine()读入,html body部分用InputStream.read()读入,为什么原作者把它分成两个部分暂且不论。
    我把DataInputStream改成BufferedReader以后,当后面InputStream接管socket的时候有一部分信息还在BufferedReader中,所以造成页面显示不完整。
    解决方法可能是这样,要么从头到底使用BufferedReader,否则避免使用BufferedReader,改用不带缓存的读入流。