我正在尝试建立一个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.....");
}
}
1条答案
按热度按时间llew8vvj1#
在Web浏览器或客户机与Web服务器之间建立类似套接字的连接的推荐方法是使用WebSockets。这会导致用于HTTP请求/响应的连接被双向套接字通信接管。它是HTTP协议的一种广泛支持的扩展。
如果要通过Web服务器连接两个或多个Web浏览器或Web客户端,则需要在每个浏览器服务器之间建立WebSockets,然后服务器需要从WebSockets的服务器端之间路由信息。
实现细节将取决于客户端和服务器端使用的技术堆栈。您可以从阅读以下内容开始:
你尝试的方法看起来好像行不通。即使它确实能起作用,管理你已经建立的连接也会有问题......导致资源泄漏,回收端口的问题,等等。然后你需要处理潜在的安全问题;例如确定连接到您正在监听的
ServerSocket
端口的客户端不是某个入侵者。