A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 何仕映 于 2013-5-28 16:11 编辑

在建立TCP服务端的ServerSocket对象后,通过此对象调用accept()方法获取客户端的Socket的对象。在服务端通过获取到的客户端Socket对象调用close()方法,似乎没有把客户端关掉。是这样的吗?如果关了有什么方法可以验证吗?麻烦各位指点一下。谢谢。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

3 个回复

倒序浏览
首先,这个问题,怎么说呢,老毕的视频中好像每次都是关闭了的
但是查看JDK文档:
public void close() throws IOException关闭此套接字。
所有当前阻塞于此套接字上的 I/O 操作中的线程都将抛出 SocketException。
套接字被关闭后,便不可在以后的网络连接中使用(即无法重新连接或重新绑定)。需要创建新的套接字。
如果此套接字有一个与之关联的通道,则关闭该通道。
所以说其实服务端的是自动关闭的

你可以到eclipse里面试试,如果不关闭客户端的socket连接,eclipse是有提示的
但是如果不关闭服务端的,eclipse是不会提示的

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
我想是这样的,首先得明确一点,服务端和客户端应该是你请求一次,我相应一次,你请求多次,我响应多次,其实和我们上网的道理是一样的,比如请求某一个www.itheima.com网站,刚开始可以登录进去玩,但是过了一段时间www.itheima.com挂了,再去请求,是不是登不进去啊。就是说在这句话Socket s = new Socket("127.0.0.1",10000);压根儿就过不去,你觉得还会有s.close()么?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
只要服务器关掉。客户端也就关掉了。连接不到Socket对象上了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马