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

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

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

最佳答案
很多年前,当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文件.

希望有所帮助.

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

> http://blogs.webtide.com/gregw/entry/jetty_websocket_server
> http://code.google.com/p/socketio-java/

因此,使用HTML5 WebSockets,似乎使用Servlet进行非http(s)原始套接字工作似乎并不是一个非标准的用例.

转载注明原文:套接字 – 如何创建将侦听特定端口并接受TCP连接的servlet(非https) - 代码日志