java - 当在 servlet 中关闭输出流时,是否意味着套接字连接也正在关闭?
问题描述
最近,我决定开始创建自己的 servlets 容器,以更好地了解 apache tomcat 和服务器应用程序通常是如何工作的。所以,为此,我需要学习套接字编程。所以,据我所知,当套接字的输出流被关闭时,套接字连接也被关闭。我不明白如何让 apache tomcat 在 http 请求/响应交互后不关闭套接字连接优化我的应用程序。
这是代码片段:
Socket socket;
PrintWriter pw = new PrintWriter(socket.getOutputStream());
pw.close();
关闭返回的 OutputStream 将关闭关联的套接字。
所以,如果另一个套接字试图从输入流中获取一些东西,那么它将得到一个套接字已关闭的异常。我刚刚给出了没有应用程序协议的裸套接字(HTTP,WS ...)
但是,当有一个 servlet 并且它的输出流被这样的程序员关闭时会发生什么:
// The http request has the header - Keep-alive : true
public class DisplayHeader extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.close();
}
就我而言,关闭任何高流将调用 close() 方法,其他流保持较低,直到关闭基本流。因此,关闭打印器后,套接字的输出流也已关闭。所以,可能决定只是刷新缓冲区内容,仅此而已,在需要之前不要使用 close 方法?
解决方案
推荐阅读
- octave - 八度数据框与 isna() 函数的问题
- excel - VBA 图上的动态范围
- linux - Linux x86-64 syscall 何时会破坏 %r8、%r9 和 %r10?
- javascript - 显示 CSS 预加载器覆盖直到页面加载
- coq - 软件基础:weak_pumping 引理证明
- javascript - Cypress CSS Locator I am trying to locate a colour picker element from a parent class. I can get to the parent but not sure how to get the child
- javascript - posting form data with ajax javascript and php
- c++ - C ++循环中断'导致std :: find算法
- javascript - Next.js Puppeteer PDF 可下载链接返回错误
- android - 未为类型“Type”定义运算符“[]”。Flutter ListView 构建器