日期:2014-05-20  浏览次数:20769 次

关于socket输入输出流的问题
这里是一个服务端客户端程序

在客户端中,有一个logon方法
 public boolean logon(String acount,String password) throws UnknownHostException, IOException{
  System.out.println("客户端调用controller中logon方法");
  if(socket == null){
  socket = new Socket(serverIp,serverPort);
  }
  System.out.println("客户端打开socket,并开始连接服务端");
  input = new ObjectInputStream(socket.getInputStream());
  out = new ObjectOutputStream(socket.getOutputStream());
  System.out.println("客户端成功打开输入,输出流");
}

服务端中,在连接后,也会去获取它的输入输出流
public ServerThread(Socket socket) throws IOException{
  this.socket = socket;
  System.out.println("准备获取客户端输入输出流");
  this.input = new ObjectInputStream(socket.getInputStream());
  this.output = new ObjectOutputStream(socket.getOutputStream());
  System.out.println("成功构造服务线程");
}
这里是采用一个线程去处理的,在获取输入输出流的时候也堵塞了。

先启动服务端,在启动客户端,根据控制台的打印,显示客户端,服务端同时堵塞在了获取输入输出流上了,有没有人知道这个是什么原因呢?
但是在获得input和out对象的时候,这个线程堵塞了,一直不会往下走,

------解决方案--------------------
查文档,objectOutStream的构造方法有说明。。。
------解决方案--------------------
客户端写入信息(OutputStream)到流,发送到服务端,服务端从流中接受信息(InputStream)
服务端发送反馈信息写入流(OutputStream),客户端从流中接收服务端的反馈信息(InputStream)
我想应该有个先后顺序,不然可能就会导致流阻塞
------解决方案--------------------
楼上我是架子良啊