如何创建将侦听特定端口并接受 TCP 连接(非 https)的 servlet

ala*_*lan 5 sockets port tomcat servlets tcp

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

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

tsa*_*wei 5

许多年前在 Java 中首次引入 servlet 时,关于 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,似乎将 Servlets 用于非 http(s) 原始套接字工作似乎毕竟不是一个非标准的用例。


use*_*421 1

您可以做到这一切,只需编写代码即可,但是为什么需要 servlet 部分呢?还是雄猫?