黑马程序员技术交流社区

标题: Socket的问题 [打印本页]

作者: 黄云南    时间: 2012-3-16 15:55
标题: Socket的问题
socket类中有一个shutdownOutput();的方法它是用来禁用socket对象中的输出流,
我不明白,禁用了还不如直接用close方法把它关了不就更省事,又省资源吗?
这两方法有什么不同的用途啊?
作者: 李创    时间: 2012-3-16 16:00
close() 是指套接字被关闭后,便不可在以后的网络连接中使用(即无法重新连接或重新绑定)。需要创建新的套接字。
shutdownOutput();禁用此套接字的输出流
一个是关闭套接字,一个是关闭套接字的输出流
作者: 陈汉帆    时间: 2012-3-17 15:05
shutdownOutput()方法是用来禁用socket对象中的输出流,它给服务端提供了一个结束标识,服务端接到这个标识后,就停止对客户端数据的接收,再处理数据。
如果用直接close,就没有给服务端发送这个标识,服务端还是会一直等客户端的数据,从而造成服务端的资源浪费
作者: 魏群    时间: 2012-3-17 18:20
禁用此套接字的输出流。对于 TCP 套接字,任何以前写入的数据都将被发送,并且后跟 TCP 的正常连接终止序列。 如果在套接字上调用 shutdownOutput() 后写入套接字输出流,则该流将抛出 IOException
close()关闭套接字关闭此套接字也将会关闭该套接字的 InputStream 和 OutputStream。
如果此套接字有一个与之关联的通道,则关闭该通道。
shutdownOutput()只是关闭输出流 关闭以后 还可以用此套接字的InputStream () 继续读取信息。




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