【问题标题】:How to create servlet that will listen on specific port and accept TCP connections (non-https)如何创建将侦听特定端口并接受 TCP 连接(非 https)的 servlet
【发布时间】:2011-05-21 07:54:34
【问题描述】:

我需要创建 servlet 来监听某个特定端口(如 serverSocket.accept()),生成新线程(如普通 servlet)并将套接字(或仅输入流和输出流)传递给我的代码。 这个连接与http无关。我需要读写二进制数据到打开的连接。

Tomcat 可以吗?从哪里开始? 我已经搜索了 GenericSocket 示例,但我看到从 GenericSocket 继承的 servlet 仍然必须在 web.xml 中配置一些 url 模式 - 但这是特定于 http 的。

【问题讨论】:

标签: sockets tomcat servlets tcp port


【解决方案1】:

您可以做所有这些,只需编写代码,但为什么需要 servlet 部分?还是Tomcat?

【讨论】:

    【解决方案2】:

    一定要查看servlet for implementing socket connection。您正在尝试做的事情是非标准的。

    【讨论】:

      【解决方案3】:

      我想使用一些 servlet 容器(如 Tomcat),因为我也会使用 WebServices(作为客户端和服务器)。

      【讨论】:

        【解决方案4】:

        很多年前,当 servlet 首次在 Java 中引入时,关于 servlet 编程的最佳书籍之一是 Jason Hunter 的 Java Servlet Programming(由 OReilly 出版)。这本书附带了可下载的源代码示例,其中包括所谓的 DaemonHttpServlet 类,您可以将其子类化以完全按照您的要求进行操作。

        源代码见此链接:http://java.codefetch.com/example/qg/src/com/oreilly/servlet/DaemonHttpServlet.java

        还有一个 servlet 也充当 RMI 服务器。

        我明白为什么有人会看到以这种方式使用 servlet 的实用性;如果您的主应用程序是基于 HTTP 的 Web 应用程序,但您的应用程序的一小部分需要您通过原始套接字公开 RMI 接口或一些自定义接口,那么将它们实现为 servlet 将更容易将您的应用程序干净地部署为单个 .war 或 .ear 文件。

        希望对您有所帮助。

        更新:一些快速的谷歌搜索显示以下内容:

        因此,对于 HTML5 WebSockets,使用 Servlet 进行非 http(s) 原始套接字工作似乎毕竟不是这样一个非标准用例。

        【讨论】:

          猜你喜欢
          • 2016-01-24
          • 2017-01-05
          • 1970-01-01
          • 1970-01-01
          • 2018-09-25
          • 2022-11-11
          • 2021-12-16
          • 2011-12-10
          • 1970-01-01
          相关资源
          最近更新 更多