2012-06-06 116 views
0

是否有可能在客戶端的本地網絡中的客戶機上編寫可以成爲服務器的Java小程序?Java applet可以作爲服務器嗎?

更具體地說,我期望做的是通過網絡隧道非網絡流量。發送者將發送給小程序,小程序然後將接收到的數據轉發回服務器。

這種事情可能嗎?有什麼限制可能會阻礙你的發展?

注:我知道applet可以連接回服務器,這不是問題。問題是applet是否可以監聽本地客戶端端口上的連接/數據。

回答

3

未簽名的applet只能連接它們來自的主機。

一個簽名的applet可以做任何你想要的連接,並且可以監聽tcp-ip端口。

來源:http://docs.oracle.com/javase/tutorial/deployment/applet/security.html

+0

我不是在談論呼出,我談論的是在本地客戶機上監聽入站連接。將入站數據轉發回小程序來自的服務器不是問題,因爲這些都是通過HTTPS完成的。 – cdeszaq

+0

已簽名的applet可以處理任何java應用程序可以執行的操作,包括偵聽tcp-ip端口。 –

+0

使用未簽名的applet,如果applet試圖打開一個tcp-ip端口進行偵聽,或者會引發異常,用戶是否會被提示允許? – cdeszaq

0

一般情況下,它不能。

一個原因是applet往往在安全受限的環境中運行,這意味着它們被拒絕打開服務器套接字的能力。基本上你可以爲applet指定一個特殊的安全策略,或者在一個特殊的無約束容器中運行它;但是爲什麼只要將應用程序的內容移植到標準的servlet中,或者甚至是獨立的服務器上呢?

+0

只需在applet上簽名即可。 –

+0

它不能是獨立的或標準的servlet。它必須儘可能小,因爲它需要在瀏覽器頁面中加載。除此之外,如果它是一個已簽名的applet,那麼它可以在本地客戶端打開一個端口並監聽入站連接? – cdeszaq

+0

爲什麼通過別人的計算機傳輸信息非常重要?你可以通過你自己的電腦隧道!在計算機上部署servlet,或在計算機上運行獨立程序。讓它監聽非Web端口,並將請求轉發到Web端口。網絡瀏覽器使糟糕的服務器。 –

1

服務器無法連接到任何地方。服務器打開服務器套接字並正在監聽

在過去,只要我還記得服務器套接字在MSIE限制,在Netscape(你還記得這樣的瀏覽器?)是允許的:)

我個人還沒有被寫小程序在過去的10年裏,所以我不知道現在使用的瀏覽器會發生什麼,但它很容易檢查。只需編寫最短的小程序,並將代碼new ServerSocket(1234).accept();放入其init()start()方法中。如果沒有異常被拋出,你可以編寫作爲服務器的小程序。否則你不能。

只需嘗試使用所有可用的瀏覽器。 20分鐘的工作,你完成了。祝你好運。我很樂意知道結果。

相關問題