int c;
    while((c=in.read())!=-1){
       System.out.print((char)c);
       out.write(c);
       out.flush();
     }
  改成 int c = in.read();
    while((c!=-1){
       System.out.print((char)c);
       out.write(c);
       c = in.read();
System.out.println("the value is " + c);
       out.flush();
     }
看看是否会有c==-1的情况呢

解决方案 »

  1.   

    不是不执行
    你创建的是服务器
    没有人访问怎么会执行呢???
    telnet yourIP 8080
    然后输入东西,再看看
      

  2.   

    to  honkyjiang用你说的方法还是不行!!
    我考虑了好久,可能是服务器端读取字节流时c=in.read(),c永远不会等于-1
    郁闷哦!!
    c为什么就不能够判断流的结束呢?请高手看看哦:)
      

  3.   

    可能是服务器端读取字节流时c=in.read(),c永远不会等于-1  原因就是这里啦 !!
     " Connection: Keep-Alive "
    也就是socket连接不会有c==-1的情况要么断开连接(打印 IO Exception)
     是不是这个意思啊 
     int c=in.read();
     int count = in.available();//表示这个流的大小
     while(count-- > 0){
           System.out.print((char)c);
           out.write(c);
       c=in.read();  
           out.flush();
         }
      

  4.   

    我试了一下,没问题。可以执行System.out.println("closing..."),这条语句。只要你的client端断开就行了
      

  5.   

    奇怪的是我的客户端每次out完成后,都将客户端关闭了啊:
    try{
    }catch(IOException e) {
         System.err.println("IO Exception");
       } finally {
         // Always close it:
         try {
           out.close();
           in.close();
           socket.close();
           System.out.println("finally");
         } catch(IOException e) {
           System.err.println("Socket not closed");
         }可是服务器端就是不能够判断socket.getInputStream()输入流何时结束??
    服务器端读取字节流时c=in.read(),c永远不会等于-1是不是和连接方式有关?
    欢迎加入讨论:)
      

  6.   

    to zmj1977
    当一个stream结束时,in.read()会返回-1,这肯定不会错的哦
    我想可能时stream根本就没有结束。。你认为呢?我现在的问题是我的程序中已经结束了流啊
      

  7.   

    只要客户端没有断开in.read()是不会等于-1的。原因很简单:客户端没有断开前还是可以键入内容的。所以,文件当然就不是结束。-1当客户端断开连接时发生。