我想在網頁上運行的javascript與運行在我的客戶端機器上的java SocketServer之間建立套接字通信,以便在兩者之間建立連接後,工作表在客戶機上打開。我知道它會導致安全問題,但由於通信將在本地主機上,所以我對此表示贊同。客戶端上的Java服務器和Javascript之間的Socket通信
這裏是我的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();
}
}
這裏是我的HTML與JavaScript:
<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.那該怎麼辦呢?
我不知道java_socket_bridge是什麼,但不能連接到運行在瀏覽器中的JavaScript的任意TCP套接字,只有HTTP。儘管你可以通過HTTP橋接TCP,但你在java中編寫的內容將不得不說HTTP,而不僅僅是一個普通的套接字。簡答:你不能。 – xaxxon
@xaxxon我已更正我的代碼並刪除了java_socket_bridge行。所以你的意思是說,要做到這一點,我需要在java中建立一個HTTP套接字。讓我試試看。 – rahulserver
在Web瀏覽器中運行的JavaScript只能啓動http連接。但是你可以使用ajax和websockets。然而,編寫你自己的服務器來做websocket是有挑戰性的。 – xaxxon