2

私は、人が自分のコンピューター上のファイルにリモートでアクセスできるようにする小さなアプリケーションを作成しようとしています。ファイルは、マシン上で実行され、オンデマンドで Web サーバーにファイルを提供するデーモンによって提供されます。

この種の目的には、どのような種類のプロトコルが理想的ですか? ファイアウォールの問題を回避するために raw ソケット (または FTP) を使用したくありません。Websocket は良い代替手段となります。それを行う他の方法はありますか?

Javaまたは他の言語で利用できるこのようなものはありますか? ソース コードを探しているので、クローズド ソース アプリケーションは論外です。また、正しい方向に進むために役立つその他のヒントもあれば幸いです。

4

3 に答える 3

0

私によると、java.nioを使用することが最適なソリューションになります。java.nioパッケージを使用すると、ファイル全体をバッファリングして、要求に応じてネットワーク経由で送信できます。つまり、誰かがファイルを要求するときはいつでも。リモートクライアントに完全なファイルを直接ダウンロードするのではなく、アプリケーションがサーバーから受信したコンテンツをバイト単位でロードします。java.nioパッケージのMappedByteBufferおよびFileChannelクラスを使用すると、簡単に実装できます。

以下のリンクは、ソリューションの実装に役立ちます。 http://rox-xmlrpc.sourceforge.net/niotut/

于 2010-11-05T03:08:21.023 に答える
0

Java の場合、単純にファイルを読み取って Base64 でエンコードし、最後に End of file シンボルを付けてデータを送信します。バッファリングされた出力ストリームと入力ストリーム、およびソケットを検索します。

于 2010-11-05T01:03:05.063 に答える
0

私の最初の考えは、なぜ車輪を再発明するのかということです。個人のコンピューターで Web サーバーを実行し、関心のあるファイルに HTTP 経由でアクセスできるように構成するだけです。

これのセキュリティ面について長く議論するつもりはありませんが、これを設定すると、内部のコンピューターが大きな悪の世界にさらされる可能性がある/そうなるため、適切なリスク分析を行い、実行する前に管理者の承認を得てください。それを生かす。ただし、リスクが許容できる場合は、可能であれば自家製のソリューションではなく、試行錯誤された Apache (および同様のもの) を使用することを強くお勧めします。

インターネットに接続された Web サーバーがあると仮定すると、Apache httpd mod_proxy を構成して、デスクトップで実行されている Web サーバーにプロキシすることができます。オンラインで mod_proxy のドキュメントを見つけることができますが、最低限の構成は次のとおりです。

ProxyRequests on
ProxyPass /computer/abc http://abc.internalnet/somewhere/
ProxyPassReverse /computer/abc http://abc.internalnet/somewhere/
于 2010-11-05T09:44:28.190 に答える