java servlet类中套接字连接

pjngdqdw  于 2023-02-07  发布在  Java
关注(0)|答案(1)|浏览(135)

我正在尝试建立一个tcp连接,通过它我想从一个webform(jsp页面)到另一个具有相同内容的网页共享数据。
下面是在jsp页面上点击按钮时调用的servlet。当我检查试图连接的端口处于侦听状态时,它应该从servlet重定向到接收器表单,但它只是继续加载。
但是程序在套接字处卡住,在socket = socket.accept()中;这一行。我也搜索了其他资源,但得到的答案是“Socket.accept()在客户端连接到正在等待的端口(在本例中为端口8189)之前会一直挂起。您的程序工作正常”

protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String first = request.getParameter("first_name");
        String last = request.getParameter("last_name");
        String name = first + " " + last;
        PrintWriter out = response.getWriter();
        byte buffer[] = new byte[10240];
        buffer = name.getBytes();
        try {
            ServerSocket socket = new ServerSocket(4333);
            Socket insocket = socket.accept();
            OutputStream outSocket = insocket.getOutputStream();
            outSocket.write(buffer);

            response.sendRedirect("receiver.jsp");
        } catch (java.net.ConnectException e) {
            System.out.println("server application not started.....");
        }

    }
llew8vvj

llew8vvj1#

在Web浏览器或客户机与Web服务器之间建立类似套接字的连接的推荐方法是使用WebSockets。这会导致用于HTTP请求/响应的连接被双向套接字通信接管。它是HTTP协议的一种广泛支持的扩展。
如果要通过Web服务器连接两个或多个Web浏览器或Web客户端,则需要在每个浏览器服务器之间建立WebSockets,然后服务器需要从WebSockets的服务器端之间路由信息。
实现细节将取决于客户端和服务器端使用的技术堆栈。您可以从阅读以下内容开始:

你尝试的方法看起来好像行不通。即使它确实能起作用,管理你已经建立的连接也会有问题......导致资源泄漏,回收端口的问题,等等。然后你需要处理潜在的安全问题;例如确定连接到您正在监听的ServerSocket端口的客户端不是某个入侵者。

相关问题