虽然在大多数的时候可以直接使用Socket类或输入输出流的close方法关闭网络连接,但有时我们只希望关闭OutputStream或InputStream,而在关闭输入输出流的同时,并不关闭网络连接。这就需要用到Socket类的另外两个方法:shutdownInput和shutdownOutput,这两个方法只关闭相应的输入、输出流,而它们并没有同时关闭网络连接的功能。和isClosed、isConnected方法一样,Socket类也提供了两个方法来判断Socket对象的输入、输出流是否被关闭,这两个方法是isInputShutdown()和isOutputShutdown()。下面的代码演示了只关闭输入、输出流的过程:
package mysocket;
import java.net.*;
public class MyCloseConnection1
{
public static void printState(Socket socket)
{
System.out.println("isInputShutdown:" + socket.isInputShutdown());
System.out.println("isOutputShutdown:" + socket.isOutputShutdown());
System.out.println("isClosed:" + socket.isClosed());
System.out.println();
}
public static void main(String[] args) throws Exception
{
Socket socket = new Socket("www.ptpress.com.cn", 80);
printState(socket);
socket.shutdownInput();
printState(socket);
socket.shutdownOutput();
printState(socket);
}
}
在运行上面的代后,将得到如下的输出结果: isInputShutdown:false isOutputShutdown:false isClosed:false isInputShutdown:true isOutputShutdown:false isClosed:false isInputShutdown:true isOutputShutdown:true isClosed:false 从输出结果可以看出,isClosed方法一直返回false,因此,可以肯定,shutdownInput和shutdownOutput并不影响Socket对象的状态
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)