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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© flying 中级黑马   /  2014-2-18 17:15  /  731 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class Client {
  2.         public void run(){
  3.                 try {
  4.                         Socket socket=new Socket("127.0.0.1",9090);
  5.                        
  6.                         //创建对象输入流
  7.                         ObjectInputStream in=
  8.                                         new ObjectInputStream(socket.getInputStream());
  9.                         ObjectOutputStream out=
  10.                                         new ObjectOutputStream(socket.getOutputStream());
  11.                         System.out.println("请输入字符串:");
  12.                         Scanner sc =new Scanner(System.in);
  13.                         String s=sc.next();       
  14.                         out.writeObject(s);
  15.                         out.flush();
  16.                         s=(String)in.readObject();
  17.                         System.out.println("服务器返回的字符串:");
  18.                         System.out.print(s);
  19.                         in.close();
  20.                         out.close();
  21.                         socket.close();
  22.                 } catch (IOException e) {
  23.                         e.printStackTrace();
  24.                 }catch(ClassNotFoundException e){
  25.                         e.printStackTrace();
  26.                 }
  27.         }
  28.         public static void main(String[] args) {
  29.                 Client client=new Client();
  30.                 client.run();
  31.         }
  32. }
复制代码

代码如上  可以和服务器建立连接 但是无法传送数据,网上说是线程阻塞  但不明白为什么会阻塞  

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

4 个回复

正序浏览
in和out的前后位置改变一下就可以 但是就是不明白为什么要改变位置  
回复 使用道具 举报
还是不行
这句话 System.out.println("请输入字符串:");
根本就没运行 阻塞是在
           ObjectInputStream in=
                                        new ObjectInputStream(socket.getInputStream());
                        ObjectOutputStream out=
                                        new ObjectOutputStream(socket.getOutputStream());
回复 使用道具 举报
在out.flush();  下面加一行
socket.shutdownOutput();
告诉服务器数据传完了  才能继续走代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
变量out和变量in的位置改变一下就可以 但是具体原因是什么?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马