首页 / JAVA / java-使用流关闭套接字
java-使用流关闭套接字
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-使用流关闭套接字,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2073字,纯文字阅读大概需要3分钟。
内容图文
![java-使用流关闭套接字](/upload/InfoBanner/zyjiaocheng/663/b9510929dc9446ba89aa55d05ec89561.jpg)
我的以下问题非常简单.
这是我的代码:
public class Protocol implements Runnable {
private SSLSocket socket = null;
private InputStream is = null;
private OutputStream os = null;
...
public Protocol(Socket s) {
socket = (SSLSocket)s;
is = socket.getInputStream();
os = socket.getOutputStream();
}
@Override
public void run() {
...
ping();
socket.close();
...
}
public void ping() {
BufferedWriter writer;
try {
writer = new BufferedWriter(new OutputStreamWriter(os));
writer.write("OK");
}
catch (IOException e) { System.out.println("ERROR: " + e.getLocalizedMessage()); }
finally { writer = null; }
}
我知道我没有提供很多源代码,但这足以回答这个问题.如您所见,在“ ping”方法中,我创建了一个BufferedWriter,用于将“ OK”字符串写入远程源.稍后,我关闭套接字.
因此,我的简单问题是:据我了解,由于我关闭了套接字,因此链条应如下所示:
关闭插座—->关闭的是os —->关闭作家
因此,通过关闭Socket,我也关闭并允许GC释放BufferedWriter.我是正确理解还是做错了什么?对于我用其他方法(即BufferedInputStream)初始化的所有作者和读者,是否都是这样?通过在方法末尾将这些变量设置为null,我是否在帮助GC区分应释放的内容?还是我不应该这样做?
谢谢!
解决方法:
From what I understand, since I close the socket, the chain should go like this:
Close socket —-> which closes is and os —-> closes writer
否.BufferedWriter包装在套接字输出流中,但是套接字不知道.它无法关闭它.
So, by closing the Socket, I am also closing and allowing the BufferedWriter to be freed by the GC.
不,不. ping()返回时,BufferedWriter可用于GC,并且永远不会关闭.
Am I understanding this correctly
没有.
or doing something wrong?
是.您不应该为每条消息创建一个新的BufferedWriter.您应该在插座的使用寿命中使用同一插座,然后关闭它而不是插座.同样,在套接字的整个生命周期内,只能使用一个输入流或Reader.否则,您可能会丢失其缓冲区中的数据.
Is this true for all writers and readers that I initialize in other methods (i.e. BufferedInputStream).
没有.
And by setting these variables null at the end of the method, am I helping the GC to distinguish between what should be freed?
不,您只是在浪费时间和空间.该方法无论如何都将退出,因此其所有局部变量都会消失.
Or should I not do this?
您不应执行任何操作.
内容总结
以上是互联网集市为您收集整理的java-使用流关闭套接字全部内容,希望文章能够帮你解决java-使用流关闭套接字所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。