
A 回答 (4件)
- 最新から表示
- 回答順に表示
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 …
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.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などに変更する必要があるのですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
先着1,000名様に1,000円分もらえる!
教えて!gooから感謝をこめて電子書籍1,000円分プレゼント
-
C言語(gcc), Linux, FTPプログラミング
C言語・C++・C#
-
Visual C++からftpを使う
C言語・C++・C#
-
linuxでのftpクライアントプログラムをつくるには
その他(インターネット接続・インフラ)
-
4
INIファイルからのデータ読込みについて
C言語・C++・C#
-
5
SocketとFTPの違いについて
その他(インターネット接続・インフラ)
-
6
FTPの連続実行でフリーズする
C言語・C++・C#
-
7
LPCWSTRとchar
C言語・C++・C#
-
8
C++によるファイル送受信プログラム作成について
C言語・C++・C#
関連するQ&A
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
UDP通信におけるbind関数について
-
5
VB6のwinsockでconnectできない
-
6
Winsockを使わずにVBでSocketを...
-
7
ソケット通信 同じポート番号...
-
8
UDP/IPでのソケット作成につい...
-
9
CreateFile関数でCOMポートが開...
-
10
VBのソケット通信(winsock)の...
-
11
ソケットでクライアントのipア...
-
12
Socket通信の0バイト受信について
-
13
BufferedInputStream.readの終...
-
14
UDP通信する時に、相手にどうや...
-
15
Linuxでパケットを発信する際・...
-
16
C言語でHTTP1.1のキープアライ...
-
17
C言語のよるrsh-clientの簡潔...
-
18
相手のIPアドレスを取得する方法
-
19
WINSOCKのWSACleanupについて
-
20
UDP通信(SNMP)したいが、うま...
おすすめ情報