1

(HTTP 接続を受信する代わりに) 直接 TCP 接続を受信するように Tomcat 5.5 を構成する必要があります。

アイデアは、クライアントから TCP 接続を受信し、その情報をデータベースに保存することです。

手伝ってくれますか?

4

2 に答える 2

2

あなたの質問は、用語の矛盾を具体化しています。Tomcatはサーブレットコンテナです。サーブレットはHTTPを話します。サーブレットまたはサーブレットコンテキストリスナー内でいつでもServerSocketを開くことができますが、実際には何のためにTomcatが必要ですか?

于 2012-07-31T10:02:32.843 に答える
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/ にアクセスします。

于 2012-07-31T15:10:09.853 に答える