gpt4 book ai didi

java - 连接到 Tomcat 上的套接字?

转载 作者:搜寻专家 更新时间:2023-10-31 20:30:37 26 4
gpt4 key购买 nike

我正在尝试从独立的小程序连接到在 tomcat 上运行的 servlet:

小服务程序

public void init(ServletConfig config) throws ServletException { 
super.init(config);
// Start a daemon thread
try {
daemonThread = new Daemon(this);
daemonThread.start();
}
catch (Exception e) {
}
}

protected int getSocketPort() {
return 8080;
}

public void handleClient(Socket client){
new ScribbleThread(this, client).start();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
StringBuffer sb = new StringBuffer();
sb.append("<html><body bgcolor=pink text=red>");
sb.append("<h1 align=center>RUNNING</h1><hr>");
sb.append("</body></html>");
out.println(sb);
out.close();
}
}

Servlet 的 init() 创建这个:

class Daemon extends Thread { 
private ServerSocket serverSocket;
private SocketServlet servlet;

public Daemon(SocketServlet servlet) {
this.servlet = servlet;
}

public void run() {
try {
// Create a server socket to accept connections
serverSocket = new ServerSocket(servlet.getSocketPort());
}
catch (Exception e) {
return;
}
try {
while (true) {
try {
servlet.handleClient(serverSocket.accept());
}
catch (IOException ioe) {
}
}
}

我已通过 eclipse 将其部署到 TomCat。我的问题是我的小程序需要将套接字连接到什么地址?当 我访问 http://localhost:8080/scrabServ/connect 时,我看到来自 doGet() 的“RUNNING”消息,那么它需要指向哪里?

小程序:

public static String testConnection(){
InputStream in = null;
try {
// Make socket connection to servlet
String servlet = new String("localhost/scrabServ/connect");
Socket socket = new Socket(servlet, 8080);

这给了我:

Exception in testConnection()java.net.UnknownHostException: localhost/scrabServ/connect
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:195)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:189)
at scribble.Scribble.testConnection(Scribble.java:41)
at scribble.Scribble.main(Scribble.java:28)

并指向 new Socket(servlet, 8080) 行。

最佳答案

您只需打开一个到 "localhost", 8080 的套接字,然后发出一个 GET scrabServ/connect 命令。您无法打开特定 URL 的套接字。

要与 servlet 通信,您可以通过请求参数进行,基本上是发出 GET 命令,例如:http://www.jmarshall.com/easy/http/http_footnotes.html#getsubmit

也许你应该使用 URLConnection反而。如果你详细说明了你想要做什么,也许我可以更好地了解如何帮助你,也许你想要做的事情甚至不需要 HTTP 服务器。

关于java - 连接到 Tomcat 上的套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6396167/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com