黑马程序员技术交流社区

标题: 毕老中一个while的问题 [打印本页]

作者: 龚振 龚振 龚振    时间: 2012-4-5 04:51
标题: 毕老中一个while的问题
本帖最后由 klas2008 于 2012-4-5 04:51 编辑

在毕老day23中TcpDemo2.java里,如果在原代码上加入31行和50行这两行while{}循环,会出现如下错误
客户端正常,服务端运行完毕后会出现Socket已经关闭。
主要想请问下大家程序是怎么运行的过程最后报出这样的错误呢?
  1. import java.io.*;
  2. import java.net.*;
  3. class TcpClient2
  4. {
  5.         public static void main(String[] args)throws Exception
  6.         {
  7.                 Socket s = new Socket("192.168.1.254",10004);
  8.                
  9.                 OutputStream out = s.getOutputStream();

  10.                 out.write("服务端,你好".getBytes());

  11.                
  12.                 InputStream in = s.getInputStream();

  13.                 byte[] buf = new byte[1024];

  14.                 int len = in.read(buf);

  15.                 System.out.println(new String(buf,0,len));

  16.                 s.close();
  17.         }
  18. }

  19. class TcpServer2
  20. {
  21.         public static void main(String[] args) throws Exception
  22.         {
  23.                 ServerSocket ss = new ServerSocket(10004);
  24.     while(true){
  25.                         Socket s = ss.accept();
  26.        
  27.                         String ip = s.getInetAddress().getHostAddress();
  28.                         System.out.println(ip+"....connected");
  29.                         InputStream in = s.getInputStream();
  30.        
  31.                         byte[] buf = new byte[1024];
  32.        
  33.                         int len = in.read(buf);
  34.        
  35.                         System.out.println(new String(buf,0,len));
  36.        
  37.        
  38.                         OutputStream out = s.getOutputStream();
  39.        
  40.        
  41.                         Thread.sleep(10000);
  42.                         out.write("哥们收到,你也好".getBytes());
  43.     }
  44.                 s.close();

  45.                 ss.close();
  46.         }
  47. }
复制代码

QQ截图20120405044630.jpg (16.65 KB, 下载次数: 25)

QQ截图20120405044630.jpg

作者: yangshang1    时间: 2012-4-5 06:34
    ServerSocket ss = new ServerSocket(10004);
            Socket s=null;
            boolean flag=true;
while(flag){             //不能让他死循环

                     s= ss.accept();

   
                    String ip = s.getInetAddress().getHostAddress();

                    System.out.println(ip+"....connected");

                    InputStream in = s.getInputStream();

   
                    byte[] buf = new byte[1024];

   
                    int len = in.read(buf);

   
                    System.out.println(new String(buf,0,len));

   
   
                    OutputStream out = s.getOutputStream();

   
   
                    Thread.sleep(10000);

                    out.write("哥们收到,你也好".getBytes());

}

            s.close();


            ss.close();





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2