3
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

C#でFTP/SFTP機能を作る方法のまとめ

Last updated at Posted at 2018-09-24

Unity上でFTP/SFTP機能を扱えるようにしたかったので、作り始めると自分の無知さと知見が溜まったことからこの記事を書こうと思いました。

[注意点]
C#の話しが出て来ますが、UnityのC#ではなく、**.NETのC#**として捉えてからUnityだと...という解釈をお願いします。

環境について

  • MacBookPro 13
    • macOS High Sierra 10.13.3
    • 使ったFTPクライアントのアプリ
      • Cyberduck
    • Unity 2017.4.5f1
      • .NET 4.6
  • (FTP)Docker
    • Ubuntu 16.04.5 LTS
  • (SFTP)GCP VMインスタンス
    • Ubuntu 16.04.5 LTS (GNU/Linux 4.15.0-1018-gcp x86_64)

概要について

環境の概要ですが、GCPのVMインスタンスに対してFTP(File Transfer Protocol)を最初していて、途中からSFTPでしか接続できないことが分かりました笑汗

なので一旦、FTP接続のサーバ側のテストに関しては、Dockerを使ってローカルにほぼほぼGCPと同じ環境を用意して、確認作業できるようにしました。

DockerでFTPサーバを用意する方法について

最初は、 @nononote さんのDockerでFTPサーバーやSFTPサーバーをたてるのーとを参考に作ろうとしていましたが、環境が違いすぎるので問題が起きた時のキャッチアップが面倒になるなぁと思い、途中からGCPと同じ環境を用意したいと作業を切り替えました。

そのため、@engineer_oscaさんのDockerでUbuntu 16.04 LTSのイメージを利用してみようを参考に用意しましたー

だがしかし、Ubuntuでvsftpdを用いたFTPサーバの構築が面倒なのですよねぇ...
いろんな記事を参考に設定しているもののなぜか

# service vsftpd start
 * Starting FTP server vsftpd
 * vsftpd failed - probably invalid config.

という感じでなかなか解決できない状況^^;

C#でFTP

C#でFTPをするとなると無難に以下の2つを使うことになると思います。

Microsoftが用意しているドキュメントでFTPの実装方法や詳細を解説しているので、FtpWebRequestFtpWebResponseの詳細は、Docs < .NET < .NET Framework < .NET Frameworkのネットワークプログラミング < FTPを見てくださいー

C#でSFTP

C#のSFTPですが、FtpWebRequestFtpWebResponseだけでは実装できません。
名前にあるようにSSHをベースにFTPを実装する必要があるため、別のモジュール・ライブラリを扱う必要があるようです。

今のところ把握していることとしては、

という感じでできそうな感じはするもののもう少し調査・検証が必要かなという感じです。

まとめ

一瞬、C言語のレイヤーからFTP/SFTPの実装をやろうかと考えましたが、先にすでにあるものを使って実現させて、余力があればすでにあるものがどうやって作られているのか把握する勉強になるのでC言語でのFTP/SFTPの実装をやろうかと考えています笑

さて、元々やりたいこととしては、Unity上でFTP/SFTPが扱えるようにすることなので、エディター拡張関連は全く考えていませんw
なので、先にFTPが実装できたらエディター拡張を作っていこうかと。

進捗があったら記事作るなりアップデートするなりする予定ですー

 

3
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?