黑马程序员技术交流社区

标题: 客户端传送线程阻塞 [打印本页]

作者: flying    时间: 2014-2-18 17:15
标题: 客户端传送线程阻塞
  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. }
复制代码

代码如上  可以和服务器建立连接 但是无法传送数据,网上说是线程阻塞  但不明白为什么会阻塞  
作者: flying    时间: 2014-2-18 17:16
变量out和变量in的位置改变一下就可以 但是具体原因是什么?
作者: 长石    时间: 2014-2-18 17:20
在out.flush();  下面加一行
socket.shutdownOutput();
告诉服务器数据传完了  才能继续走代码
作者: flying    时间: 2014-2-18 17:28
还是不行
这句话 System.out.println("请输入字符串:");
根本就没运行 阻塞是在
           ObjectInputStream in=
                                        new ObjectInputStream(socket.getInputStream());
                        ObjectOutputStream out=
                                        new ObjectOutputStream(socket.getOutputStream());

作者: flying    时间: 2014-2-18 17:30
in和out的前后位置改变一下就可以 但是就是不明白为什么要改变位置  




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