A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© XinWen 中级黑马   /  2014-5-2 19:53  /  815 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.io.IOException;
  2. import java.net.ServerSocket;
  3. import java.net.Socket;
  4. import java.net.UnknownHostException;

  5. public class TCPDemo {

  6.         public static void main(String[] args) {
  7.                 class Server{
  8.                         private ServerSocket mServer;
  9.                         private Socket mClient;
  10.                        
  11.                        
  12.                         public void begin() throws IOException{
  13.                                 mServer = new ServerSocket(60000);
  14.                                 mClient = mServer.accept();
  15.                                
  16.                                 mClient.getOutputStream().write("nihao".getBytes());
  17.                                 System.out.println("server send over");
  18.                                
  19.                                 mClient.close();
  20.                                 mServer.close();
  21.                                 System.out.println("server  over");
  22.                         }
  23.                 }
  24.                 class Client{
  25.                         private Socket mClient;
  26.                        
  27.                         public void begin() throws UnknownHostException, IOException, InterruptedException{
  28.                                 mClient = new Socket("127.0.0.1", 60000);
  29.                                 Thread.sleep(3000);
  30.                                 System.out.println("Client recevice data");
  31.                                
  32.                                 System.out.println(mClient.getInputStream().read());
  33.                         }
  34.                 }
  35.                
  36.                 new Thread(new Runnable(){
  37.                         @Override
  38.                         public void run() {
  39.                                 try {
  40.                                         new Server().begin();
  41.                                 } catch (IOException e) {
  42.                                         // TODO Auto-generated catch block
  43.                                         e.printStackTrace();
  44.                                 }
  45.                         }
  46.                        
  47.                 }).start();
  48.                
  49.                 new Thread(new Runnable(){
  50.                         @Override
  51.                         public void run() {
  52.                                 try {
  53.                                         new Client().begin();
  54.                                 } catch (UnknownHostException e) {
  55.                                         // TODO Auto-generated catch block
  56.                                         e.printStackTrace();
  57.                                 } catch (IOException e) {
  58.                                         // TODO Auto-generated catch block
  59.                                         e.printStackTrace();
  60.                                 } catch (InterruptedException e) {
  61.                                         // TODO Auto-generated catch block
  62.                                         e.printStackTrace();
  63.                                 }
  64.                         }
  65.                        
  66.                 }).start();
  67.         }
  68.        
  69.        
  70. }
复制代码
我的思路是这样的。 开启了 服务器 和客户端。  客户端 连接上服务器, 服务器在 连接之后,会给 客户端发送 数据,然后关闭。而 客户端 连接上了 之后, sleep 3s 再接收数据。我的 问题是 ,客户端 sleep 醒来之后, 服务器 早就 关闭了 连接,那为什么
客户端还能从 流中 读取数据。

评分

参与人数 1技术分 +1 收起 理由
天涯追梦 + 1

查看全部评分

2 个回复

正序浏览
skill20 发表于 2014-5-2 20:07
都放一个类的方法里了。。。

应该 和这个 没关系 把
回复 使用道具 举报
都放一个类的方法里了。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马