在套接字上玩一些教程但很难连接。
我的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();
}
}
答案 0 :(得分:2)
您使用的主机名为“eric.server.com/apps/knock”,当您真正想要的是“eric.server.com”时。
然后,一旦连接,您就可以开始使用套接字协议(ajp)与之通信。 URI部分位于protocol的req_uri部分,而不是主机。
但更大的问题是Tomcat实际上是一个HTTP服务器,而不是套接字服务器。您应该编写一个实现教程服务器部分的servlet并在Tomcat中运行它,或者只是将其作为独立的服务器进程编写。