黑马程序员技术交流社区

标题: Socket问题 [打印本页]

作者: 于启会    时间: 2012-9-14 06:36
标题: Socket问题
  1. <p>import java.io.IOException;
  2. import java.io.InputStream;
  3. import java.io.OutputStream;
  4. import java.net.ServerSocket;
  5. import java.net.Socket;</p><p>/*
  6. * 服务器端接收客户端发来的数据并返回给客户端数据
  7. */
  8. public class TCPDemo2_server {
  9. public static void main(String[] args) {
  10.   try {
  11.    ServerSocket ss=new ServerSocket(10006);
  12.    Socket s=ss.accept();
  13.    InputStream is=s.getInputStream();
  14.    byte[] buf=new byte[1024];
  15.    int len=is.read(buf);
  16.    System.out.println(new String(buf,0,len));
  17.    //is.close();
  18.    
  19.    OutputStream os=s.getOutputStream();
  20.    byte[] by="客户端更好!!!!".getBytes();
  21.    os.write(by);
  22.    //os.close();
  23.    //s.close();
  24.    ss.close();
  25.   } catch (IOException e) {
  26.    e.printStackTrace();
  27.   }
  28. }
  29. }

  30. import java.io.IOException;
  31. import java.io.InputStream;
  32. import java.io.OutputStream;
  33. import java.net.Socket;
  34. import java.net.UnknownHostException;</p><p>/*
  35. * 客户端向服务器发送数据,并接收服务器端发送过来的数据
  36. */
  37. public class TCPDemo2_client {</p><p> public static void main(String[] args) {
  38.   try {
  39.    Socket s=new Socket("127.0.0.1",10006);
  40.    OutputStream os= s.getOutputStream();
  41.    byte[] buf="客户端,我来了!!".getBytes();
  42.    os.write(buf);
  43.    //os.close();
  44.    
  45.    InputStream is=s.getInputStream();
  46.    byte[] re=new byte[1024];
  47.    int len=is.read(re);
  48.    System.out.println(new String(re,0,len));
  49.    //is.close();
  50.    s.close();
  51.   } catch (UnknownHostException e) {
  52.    e.printStackTrace();
  53.   } catch (IOException e) {
  54.    e.printStackTrace();
  55.   }
  56. }</p><p>}
  57. </p>
复制代码
当把上面注释内容注释了能够正常运行,但是上面注释的都是从Socket中接收的输入流和输出流。
使用使用完关闭应该是没有问题的,可是把注释解除后出现异常Socket is closed。
请问这是怎么回事呢?





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