A 回答 (4件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
めんどくさいのでPassive modeの場合を。
FTPはコマンドの送信とデータの受信を別々のSocketで交わします。とりあえず21/tcpに繋いでログインした後、PASVコマンドを送信してその応答を取得します。
% telnet ftp.example.jp 21
入力>USER username
入力>PASS password
入力>PASV
応答<227 Entering Passive Mode (127,0,0,1,68,89)
この際返される(127,0,0,1,68,89)の文字列をデータ送受信用に使用するアドレスとして利用します。とりあえず後ろの2つの数字を切り出して
68 * 256 + 89
して求めた数値がデータ受信用のポート番号です。このポート番号に新たにSocketを張っておいて、最初に繋いでおいた21/tcpのSocketでLIST, NLSTなどなどのデータ受信用のコマンドを叩くと、後からはったもう一方のソケットにその応答が帰ってきます。
大雑把ですがこんな感じです。telnetコマンドでこの流れを試すことができますので、とりあえずやってみるとよいかと思います。
この回答への補足
ありがとうございます。
passive modeではなく、Activeで、LISTなどを送信しましたら、問題なくファイル一覧が表示されました。
ただ、言われたようにtelnetコマンドで使用いたしました。LISTやCDWなどは動作確認いたしましたが、データのダウンロード時(get)に、パーミッションエラーが表示されたのは何故なのですか?
ユーザーやグループをftpなどに変更する必要があるのですか?
No.2
- 回答日時:
コマンドラインftpが使える環境であればデバッグモードで起動してください。
クライアント/サーバー間のすべてのやりとりが表示されます。
No.3
- 回答日時:
ネットワーク関連のプログラムを組まれるのでしたら、できればRFCを読まれたほうがいいと思います。
応答コードなどはうんざりするぐらい定義されています
http://www.wu-ftpd.org/rfc/
一部は日本語に翻訳されています。
http://www.mars.dti.ne.jp/~torao/rfc/
http://www.se.hiroshima-u.ac.jp/~isaki/rfc/list. …
現在のFTPのコアな部分は959/1123で定義されているようです。
プロトコルの解説についてはこちらが参考になるでしょうか。
http://x68000.startshop.co.jp/~68user/net/ftp-1. …
同サイトにソケットを直に使ったC言語のサンプルプログラムもあります。
http://x68000.startshop.co.jp/~68user/net/c-ftp- …
Activeモードでなら、PORTコマンドで自IPとポートをサーバに送って、サーバからそのポートに接続があるのを待ち受ける形になるはずです。
やはりRFCをよく読んだほうがいいということですね。肝に銘じておきます。
ただ、現状ではネットで記述部分の大半を調べているのですが、ネットワークやソケット関係の関数をまだ把握していない部分があります。そのために何参考になる参考書と思ったのですが。
この考え方は間違いでしょうか?
No.4
- 回答日時:
本気でネットワークプログラミングをするなら「インターネットRFC辞典(ASCII)」と「増補版」は必須です。
http://www.amazon.co.jp/exec/obidos/ASIN/4756118 …
http://www.amazon.co.jp/exec/obidos/ASIN/4756140 …
ネット上に転がっているRFC和訳は「個人の趣味」や「ボランティア精神」での公開なので、仕事の資料としては不安です。
ネットワークAPIについては機種/OSがわからないと何ともいえません。
Windowsと仮定すると「WinSock2.0プログラミング―Window Socket APIによるネットワークプログラミングのすべて(ソフトバンクパブリッシング)」がよいかと思われます。
http://www.amazon.co.jp/exec/obidos/ASIN/4797306 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- サーバー FTPサーバについて詳しい方(アクセス権のないディレクトリを非表示にする方法) 4 2022/08/22 22:33
- サーバー NASの利用経験多い方教えてください! 1 2022/03/24 19:21
- Windows 10 だいたいの能力はどのくらいでしょうか 3 2023/03/05 17:18
- プロバイダー・ISP hpb22の接続方法の変更 1 2023/08/06 18:47
- Excel(エクセル) エクセルのファイルにリンクを貼る方法 4 2023/06/30 11:09
- ASP・SaaS サーバーログイン情報とFTP接続情報の見つけ方を教えてください。 3 2023/07/24 16:19
- ノートパソコン ESETの初期インストールの仕方 1 2022/10/14 08:26
- サーバー Googleドライブなどを使わずにテザリングAndroidでWindowsとファイル共有 1 2023/02/19 13:14
- その他(パソコン・スマホ・電化製品) Google ドライブのようにXnBay ストレージ サーバのストレージスペースをコンピュータのエク 2 2023/04/28 19:09
- その他(コンピューター・テクノロジー) 以下の用語がわかんないので教えてください!!! ①プロトコルの変換をする装置。トランスポート層からア 1 2023/07/05 09:10
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
javaでのプログラミングで・・・
-
ソケットプログラミングに関す...
-
UDP通信する時に、相手にどうや...
-
ソケット通信 同じポート番号...
-
UDPで受信終了の合図を出して受...
-
VB2008にてRS232C通信をするソ...
-
TCP/IP通信でのコネクシ...
-
eclipseでのデバックについて
-
ソケット通信(サーバ側)について
-
ソケットとそれに基づくストリ...
-
空きポートの取得方法
-
JavaでBASIC認証突破
-
エクセル VBA でのCOMポート...
-
Linuxでパケットを発信する際・...
-
TCP/IP通信型プログラムです。 ...
-
マルチスレッドプログラミング...
-
Macターミナルで実行中のプログ...
-
VBAの配列サイズとメモリに関して
-
なんかC言語でプログラム書いて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
UDP通信におけるbind関数について
-
Winsockで接続待ちタイムアウト...
-
recv関数でフリーズしてしまう
-
VB6のwinsockでconnectできない
-
ソケットのクローズについて
-
UDP通信する時に、相手にどうや...
-
エクセル VBA でのCOMポート...
-
ソケットのrecvの戻り値が0
-
UdpClient 送信元のIPアドレ...
-
Socket通信の0バイト受信について
-
WinSockでの通信プログラムがう...
-
同じLAN内パソコンのIPアドレス...
-
ソケット通信 同じポート番号...
-
VC++でのソケット通信について
-
Connectエラーが出てしまう・・...
-
CreateFile関数でCOMポートが開...
-
Winsockを使わずにVBでSocketを...
-
VB6‥ソケットについて
-
SIPがNATを越えられない理由
おすすめ情報