Socket s = new Socket("localhost",port);
InputStream is1 = s.getInputStream();
InputStream is2 = s.getInputStream();
OutputStream os1 = s.getOutputStream();
OutputStream os2 = s.getOutputStream();
System.out.println(is1==is2); //true
System.out.println(os1==os2); //false
System.out.println(is1.equals(is2)); //true
System.out.println(os1.equals(os2)); //false输出为true,false,true,false
请问是不是getInputStream()只返回一个输入流,而getOutputStream()却返回的是不同的输出流?有谁知道为什么会这样啊。请教大家如何解释getInputStream()和getOutputStream()的返回,一个是同一个,另外一个却是新生成的呢?
你可以查看 java.net.PlainSocketImpl的源码getInputStream:
if (socketInputStream == null) {
socketInputStream = new SocketInputStream(this);
}
return socketInputStream;getOutputStream:
return new SocketOutputStream(this);