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

时间:2010-12-07 01:19:00

标签: sockets tomcat servlets tcp port

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

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

4 个答案:

答案 0 :(得分: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)原始套接字工作似乎并不是一个非标准的用例。

答案 1 :(得分:1)

你可以做到这一切,只需编写代码,但为什么需要servlet部分?还是Tomcat?

答案 2 :(得分:0)

绝对查看servlet for implementing socket connection。你要做的是非标准的。

答案 3 :(得分:0)

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