2010-11-04 148 views
2

我正在尋找一個小應用程序,允許一個人遠程訪問他們計算機上的文件。這些文件由機器上運行的守護程序提供,並按需將文件提供給Web服務器。遠程文件訪問客戶端

什麼樣的協議適合這種目的?我不想使用原始套接字(或FTP)來嘗試並避免防火牆問題。 Websockets可以是一個很好的選擇。還有其他方法嗎?

是否有類似的Java或任何其他語言的東西?我正在尋找源代碼,因此封閉的源代碼應用程序無可爭議。我還想要其他有用的提示,讓我開始朝正確的方向發展。

回答

0

對於java,您可以簡單地讀取文件並使用Base64對其進行編碼,然後隨時發送數據,最後使用文件結尾符號。查找緩衝輸出和輸入流,以及套接字。

0

根據我的說法,使用java.nio將是最佳的解決方案。在java.nio包的幫助下,您可以緩衝整個文件,並根據請求通過網絡發送它。這意味着每當有人請求一個文件。它不會直接下載遠程客戶端上的完整文件,而是應用程序將加載從服務器接收的內容的字節。通過使用java.nio包的MappedByteBuffer和FileChannel類,它可以很容易地實現。

下面的鏈接應該可以幫助您實施解決方案。 http://rox-xmlrpc.sourceforge.net/niotut/

0

我的第一個想法是爲什麼要重新發明輪子。只需在個人計算機上運行一個網絡服務器並對其進行配置,以便通過HTTP訪問感興趣的文件。

我不打算就這方面的安全問題進行長時間的討論,但可以這麼說,設置這個可以/將會使您的內部計算機暴露於大壞的世界,所以做一個適當的風險分析並獲得管理層的批准,然後才能投入使用。但是,如果風險可以接受,那麼我非常建議使用久經考驗的Apache(和類似的),而不是在可能的情況下使用本地解決方案。

假設你有一個面向互聯網的網絡服務器,那麼你可以配置Apache httpd mod_proxy代理到桌面上運行的網絡服務器。你可以在線找到mod_proxy文檔,但是最低限度的配置將是

ProxyRequests on 
ProxyPass /computer/abc http://abc.internalnet/somewhere/ 
ProxyPassReverse /computer/abc http://abc.internalnet/somewhere/ 
+0

但我不想在某人的機器上運行一個完整的Web服務器,主要是因爲配置缺陷。當然,無論我運行的是什麼類似的web服務器,但我正在尋找輕量級和易於配置的東西。有點像窗戶生活foldershare。 – GlGuru 2010-11-05 22:12:05