簡體   English   中英

客戶端上的Java服務器與Javascript之間的套接字通信

[英]Socket Communication between Java server on client and Javascript

我想在網頁上運行的javascript和客戶端計算機上運行的java SocketServer之間建立套接字通信,以便在兩者之間建立連接后立即在客戶端計算機上打開excel工作表。 我知道這會導致安全問題,但是由於通信將在localhost上進行,所以我對此表示滿意。

這是我在客戶端上運行的Java服務器:

import java.io.*;
import java.net.*;

public class ServerExcelOpenOnJavaScriptConnect {
    public static void main(String args[]) throws Exception {
        ServerSocket welcomeSocket = new ServerSocket(12345);


            Socket connectionSocket = welcomeSocket.accept();
            Process p =
                    Runtime.getRuntime()
                            .exec("C:\\Program Files (x86)\\Microsoft Office\\Office14\\excel.exe c:\\users\\rahulserver\\desktop\\abcd.xlsx");
            System.out.println("Waiting for excel file ...");
            p.waitFor();
            System.out.println("Excel file done.");

            //Runtime.getRuntime().exec();

    }
}

這是我的Javascript HTML:

    <html>
<head>
    <title>TCP Socket test</title>
    <script type="text/javascript">
    function connect(){
                var host = 'localhost';
                var port = 12345;
        var socket = new io.Socket('localhost',{'port':12345});
        socket.connect();
        alert("connected");
}



    </script>
</head>

<body>
    <button onclick="connect()">Connect</button>
</body>
</html>

由於服務器一直在等待端口12345上的連接,因此未建立連接。那么該怎么辦呢?

您有點在土路上,需要讓自己走上高速公路。

在特定情況下,當瀏覽器從主機獲取網頁和javascript時,javascript可以與Java代碼進行通信,然后javascript連接回到同一主機以獲取更多數據的連接。

對於您的情況,您希望同一台計算機既是客戶端又是服務器。 但是,如果您同時意識到兩台計算機的概念,則更容易理解所需的內容:運行瀏覽器的客戶端和運行Java的服務器。

因此,您可以在網上找到許多示例。 例如,看一下在Tomcat中運行的Java,提供一個網頁和javascript,然后該javascript使用Tomcat服務器上的另一個URL讀取json數據。

如果您想到網絡技術的主流用途,則可以找到演示您想要看到的內容的視頻。 環顧四周,例如AngularJS演示和RESTful Web Services演示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM