首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在几个时间间隔后将数据发送到servlet

在几个时间间隔后将数据发送到servlet
EN

Stack Overflow用户
提问于 2018-06-30 20:59:40
回答 1查看 233关注 0票数 0

我想创建一个Servlet,我可以在一段时间间隔后向其发送数据(GET/POST无关紧要)。它将类似于从客户端到服务器的持久连接。使用这个单一的连接,我会不时地向Servlet发送一些数据(字符串),在那里数据将被处理。这样我就不必在每次发送数据时都建立新的连接。

我现在尝试了什么。下面是我的纯Java客户端:

代码语言:javascript
复制
try {
        URL url = new URL("http://localhost:8080/MyProject/MyServletName");
        HttpURLConnection connnection = (HttpURLConnection) url.openConnection();
        connnection.setRequestMethod("GET");
        connnection.setRequestProperty("Connection", "keep-alive");
        connnection.setDoOutput(true);
        OutputStream writer = connnection.getOutputStream();
        String message = "message-";
        int counter = 0;
        while (counter < 30) {
            Thread.sleep(1000);
            message = "message-" + counter;
            writer.write(message.getBytes());
            writer.flush();
            counter++;
        }
        writer.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

因此,理想情况下,此客户端将向输出流写入数据,并在1秒后将其刷新。和我应该在我的Servlet中得到的一样。下面是我的servlet代码(doGet方法):

代码语言:javascript
复制
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(request.getInputStream()));
    String line = "";
    while ((line = bufferedReader.readLine()) != null) {
          System.out.println(line);
    }

现在,servlet应该在每秒之后打印从客户机接收到的行。但是这里的问题是servlet甚至没有被调用。如果我在client类中添加以下代码行。

代码语言:javascript
复制
int HttpResult = connnection.getResponseCode();

然后调用servlet,但它被完全执行,并且不等待从客户端发送的数据。它将如何工作?它应该在那里等待来自客户端的新数据。任何帮助都会得到重视。谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-06-30 22:04:11

如果您想使用Servlet API,您将受到其请求-响应性质的限制(每个请求都是一个新连接)。通常,创建HTTP请求并不是什么大问题,它的执行速度相对较快,所以每次都可以执行。但是,如果它(连接创建时间)对您的情况真的很重要,那么您可以考虑将其视为套接字。使用socket,您可以完全控制连接生命周期。这种方法的缺点是低级API,据我所知,它需要与Servlets分开使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51115145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档