Android端末とPCとのネットワーク越しのファイルのやりとりについて

最初にどういうお話かを書いておくと、Android側でhttpdやftpdをたてて、PC側からアクセスしてファイルをやりとりする方法についてのお話。

Android端末とPCとでファイルをやりとりするには、手っ取り早いのはUSBで接続してマウントしてやる方法だろう。
んだが、肝心のUSBケーブルが無い場合(つまり自分)、Android端末をWifi接続して、ローカルネットワーク経由でファイル転送をするという方法がほかに思い浮かぶ。
で、その方法をとる場合、スタンダードな手法はPC側で共有フォルダの設定をして、ESファイルエクスプローラで接続してファイルのやりとりをする、というもの。
なんだけど、うちの環境だとうまくいったりいかなかったりする。
理由はよくわからない。
つながるときはつながるんだけど、突然つながらなくなったりする。
それに、ネットワークをスキャンしても、フォルダ共有しているマシンが一部しか見えなかったりする。
というか一台しか見えてない。
うちにはSambaでファイル共有しているLinuxマシンが2台(うち1台は仮想マシン)、Windowsのファイル共有をしているマシンが2台あるんだけども、見えているのはWindowsの1台のみ。
で、見えてるマシンにはアクセスできるときとできないときがあると。

でまあ、PC側の設定は特に変えていないので、ESファイルエクスプローラのバグだろうと思って、ESファイルエクスプローラではないネットワークアクセスできるファイラがないか探して、File Expertってのを使ってみた。
Wifiルータをブリッジモードで使っていたり、仮想マシンが数台動いてたり、接続対象のマシンに仮想NICがあったり(VMWareのせいなんだけどそれは)で、なーんかどっかがばぐってるんだとおもったわけです。
でまあこのFile Expert、とりあえず日本語化されているんだけども、インストールするとアプリ名が「ファイル専門家」とかなって、初回起動時もなんかあまりよくわからないメッセージが出てくるんだけど、とにかくローカライズがひどい。
いや、こんなローカライズするなら英語のままにしてほしいんだが。
たぶん自動翻訳かけてそのままつっこんだ感じ。
直感だと、最初のメッセージが使用情報を提供してくれってやつで、二つ目が寄付してってやつだと思うんだけど、とりあえず両方Noっていうか右側の選択肢選んだらとりあえず起動した。
で、File Expertだと、ESファイルエクスプローラでは見えていなかったLinuxマシンなんかの共有フォルダなんかもちゃんと見えて、目的のフォルダにもアクセスできた。
が、コピペができない。
いや、もしかしたら操作の仕方が間違っているだけで、本当はできるのかもしれないけど、とりあえずやり方がわからない。
たぶんコピーはできてるんだけど、ペーストができない。
さて、困った、別のファイラを試してみるか、と思い始めつつ、ちょこちょこいじっていたら、変なのを見つけた。

File Expertを起動してローカルタブを開くと、下のところに「共有」って項目がある。
それをタップすると、「FTPのサービスを開く」っていうのがある。
試しにたたいてみた。
すると。

FTP共有を準備しました
FTPアドレス:192.168.1.xxx
FTPユーザー名:fe
FTPパスワード:filexpert
FTPポート:2211

というメッセージが。
うお、これ、もしかしてめっちゃ素敵なアプリなんじゃね!?とか感じちゃったわけなんですが、いや、まだ試してみないとわからない、と思いつつ、PC側からFTPクライアントを起動して、指定のアドレス、ポート、ユーザ名、パスワードでアクセスしてみた。
ちょっ、つながったんだけど!!!!

つまり、どういうことかというと、Android端末からPCの共有フォルダにアクセスするのではなく、Android端末側でFTPdをたてて、そこにPCからアクセスするということができてしまったということ。
その発想はなかった。
いや、あったけど、手間がかかりそうだなと思ってあえて探してなかった。
けどこんなに簡単にできちゃうとか。
試しに数百ファイル1Gほどファイル転送したけど、問題なくできてしまった。
ちなみにSDカードでchrootされているようだ。
Windowsからのアクセスだけじゃなくて一応Linuxからアクセスもしてみたけど、当たり前にちゃんとつながった。

~$ ftp
ftp> open 192.168.1.xxx 2211
Connected to 192.168.1.xxx.
220 File Expert FTP Server for Android Froyo Ready
Name (192.168.1.xxx:yyy): fe
331 Send password
Password:
230 Access granted
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT OK
150 Opening ASCII mode data connection for file list
....

出てきたIPアドレス的にローカルネットワーク向けなのは一目瞭然だったので、Wifi接続を切って、3G接続で試してみた。
すると、10.0.0.0/8系なアドレスが出てきた。
あくまでもプライベートアドレス空間に対してFTPdをたてるようだ。
うん、正しい。
まあ、3G接続だとFTPd開けないっていう方がもっといいと思うけど、満足なので求めないよ、うん。

で、共有のところに「Webのサービスを開く」っていうのもある。
そっちもたたいてみる。

共有できた!
ブラウザでやコンピュータでアクセスしてください:http://192.168.1.xxx:8080/
ユーザ名:fe
パスワード:filexpert

と出てきた。
日本語が少々怪しいが、まあ気にしない。
ブラウザでアクセスしてみると、アップローダ形式のウェブサイトが開けた。
SDカードを保存先としたアップローダだ。
少数のファイルを扱うときや、FTPとかようわからんっていう人はこれもいいかもしれない。
もしかしてWebDAV!?とかおもったけどさすがにそれはなかった。
けどFTPが使えるならそれで十分だ。

でまあ、注意事項としては、当たり前だけどこの機能を使うときはクローズドなネットワークに接続しているときに限ること。
あと、できるだけ必要なとき以外は使わないこと。
IDもパスワードもポートも固定だし、ぶっちゃけた話セキュリティ的にはざる。
家でWifi接続してて、共有したまま外に出かけちゃって、 どっかのWifiネットワークにひっかかっちゃったりしたら目も当てられない。
3G接続間のセキュリティもどこまで信用できたものかはわからないわけだし。
そういや昔どっかのプロバイダのユーザ間のネットワークがフラットなホームネットワーク的になってて、そのプロバイダのユーザ間の共有フォルダとか丸見えだったとかいう話を思い出した。
いや、まあ、仮にIDやパスワードなんかが自分で設定できたとしても、そんなサービスをオープンにして外をぶらつくものじゃないわけで。

まとめると、

  • File Expertを使えば、簡単にローカルネットワーク向けにhttpdやftpdをたてることができる
  • 家なんかのクローズドなネットワークにWifi接続してるときに、必要な時間のみの利用に限定すること

ローカライズがひどかったから駄目アプリかと思ったけど神アプリでした本当にありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>