TCP连接和Tomcat

时间:2012-07-31 08:31:09

标签: database tomcat tcp connection

我需要配置Tomcat 5.5以接收直接TCP连接(而不是接收HTTP连接)。

我们的想法是从客户端接收TCP连接并将信息存储在数据库中。

你能帮忙吗?

2 个答案:

答案 0 :(得分:2)

你的问题体现了矛盾。 Tomcat是一个servlet容器; servlet说HTTP。你总是可以在Servlet或ServletContextListener中打开一个ServerSocket,但是你真的需要Tomcat来做什么呢?

答案 1 :(得分:0)

虽然我认为EJP是正确的,但是Tomcat被用来提供http连接,这是一个与收听者的基本方法:

package test;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class ServerSocketListener implements ServletContextListener {

     private ServerSocket serverSocket;
     private final int PORT = 8081;

     @Override
     public void contextInitialized(ServletContextEvent sce) {
            System.out.println("Starting server socket at port: " + PORT);
            try {
                 serverSocket = new ServerSocket(PORT);
                 while (true) {
                      Socket client = serverSocket.accept();
                      System.out.println("Client connected from: "+client.getInetAddress().getHostAddress());
                      //handle connection ...
                 }
            } catch (IOException e) {
                 e.printStackTrace();
            }
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
         try {
             if(serverSocket!=null) {
                 System.out.println("Stopping server socket at port: " + PORT);
                 serverSocket.close();
             }
         } catch (IOException e) {
              e.printStackTrace();
         }
     }
 }

在您的web.xml中添加以下行:

<listener>
     <listener-class>test.ServerSocketListener</listener-class>
</listener>

然后拿起手机点击:http:// [Server-ip]:8081 /。