正确的格式连接到远程tomcat服务器?

时间:2011-11-09 01:23:10

标签: java tomcat

在套接字上玩一些教程但很难连接。

我的tomcat服务器位于eric.server.com,并在端口8052上运行ajp连接器。

我想使用knock knock java教程进行连接。我已将KnockKnockProtocol.class和KnockKnockServer.class上传到eric.server.com/apps/knock

在教程中,它显示了这个:

kkSocket = new Socket("tarranis", 4444);

我已改为:

kkSocket = new Socket("eric.server.com/apps/knock", 8052);

然后我从eclipse运行客户端程序,但我得到了UnknownHostException。

有人可以解释一下我做错了什么,对Tomcat和servlet来说是全新的吗?

TIA

import java.io. ; import java.net。;

public class KnockKnockClient {     public static void main(String [] args)抛出IOException {

    Socket kkSocket = null;
    PrintWriter out = null;
    BufferedReader in = null;

    try {
        kkSocket = new Socket("eric.server.com", 8052);
        out = new PrintWriter(kkSocket.getOutputStream(), true);
        in = new BufferedReader(new InputStreamReader(kkSocket.getInputStream()));
    } catch (UnknownHostException e) {
        System.err.println("Don't know about host.");
        System.exit(1);
    } catch (IOException e) {
        System.err.println("Couldn't get I/O for the connection to.");
        System.exit(1);
    }

    BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
    String fromServer;
    String fromUser;

    while ((fromServer = in.readLine()) != null) {
        System.out.println("Server: " + fromServer);
        if (fromServer.equals("Bye."))
            break;

        fromUser = stdIn.readLine();
    if (fromUser != null) {
            System.out.println("Client: " + fromUser);
            out.println(fromUser);
    }
    }

    out.close();
    in.close();
    stdIn.close();
    kkSocket.close();
}

}

1 个答案:

答案 0 :(得分:2)

您使用的主机名为“eric.server.com/apps/knock”,当您真正想要的是“eric.server.com”时。

然后,一旦连接,您就可以开始使用套接字协议(ajp)与之通信。 URI部分位于protocol的req_uri部分,而不是主机。

但更大的问题是Tomcat实际上是一个HTTP服务器,而不是套接字服务器。您应该编写一个实现教程服务器部分的servlet并在Tomcat中运行它,或者只是将其作为独立的服务器进程编写。