DOBON.NET DOBON.NETプログラミング掲示板過去ログ

FTP、ダウンロード、AcceptSocket

環境/言語:[WinXP]
分類:[.NET]

こんにちは、お世話になります。
FTPでファイル転送の処理で、ダウンロードを1回やると成功。2回目
AcceptSocketでストップしてしまって反応がありません。
プログラム強制終了して再びやるとできるので使用しているものを
しっかり開放していないのかとも思いNothingなどを入れてみましたが
かわりません。
プログラムーーーーーーーーーー
(省略)
lsc = tl.AcceptSocket
(省略)

Finally
'接続を閉じる
tl.Stop()
tl = Nothing
lsc.Shutdown(Sockets.SocketShutdown.Both)
lsc.Close()
lsc = Nothing
ipendpd = Nothing
bw = Nothing
知っている方がいらっしゃいましたら教えて下さい。お願いします。
こんばんわ、emigennです

間違ってたら御免なさい、この方と同じ方でしょうか?雰囲気が似ているものですから、、
http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=12802&rev=&no=0


tomotomoさんの問題点は .net に起因する疑問と プロトコルに起因する疑問が混在していると思います。問題点をもう少し絞り込んだ方がベターと思いますのでチェックポイントとして、

1.
>lscu = tlu.AcceptSocket→ここでかたまります。

ソケットの呼び出しが同期呼び出しで、相手からの接続が有るまではブロック(一見フリーズ)状態に成ります。つまり現象としては相手からの接続が無い、なぜ無いのか調べる必要が有ります。

2.
>FTPでファイル転送の処理で、ダウンロードを1回やると成功。2回目AcceptSocketでストップしてしまって反応がありません。

間違い無いと思いますが、一回目のPORTコマンドのポートNoと二回目のPORTコマンドのポートNoは違うNoに成っているでしょうね?、同じポートNoは続けての使用は出来ません。またファイル転送は一ファイル毎にデーター転送コネクションの接続切断を繰り返します。

3.
FTPサービスはサーバーとクライアントが逐次会話をしながら作業を進めます。その手順は(プロトコル)は決められており、クライアントソフトでモニター出来ます。tomotomoさんも今開発中のソフト以外におそらくクライアントソフトをお持ちでしょうから確認されては如何でしょうか? 手順が守られないと転送は開始されません。

ポートコマンドでのファイルのダウンロード時のレスポンス例
C-S>TYPE I
S-C>200 Type set to I.
C-S>PORT ***,***,***,***,4,79
S-C>200 PORT command successful.
C-S>RETR ******.lzh
S-C>150 Opening BINARY mode data connection for *****.lzh (*** bytes).
S-C>226 Transfer complete.
制御が大変、FTPコマンドが良くわからない、IPプロトコルって何...
などなどの問題で解決するのに時間がかかるようならば、
AG-Tech社が販売している、「IP*Works!」などといったツールを使うことをお勧めします。
 http://www.agtech.co.jp/products/nsoftware/IPWorks/
それでもコーディングしたいのであれば、
 http://support.microsoft.com/default.aspx?scid=kb;ja;832679
こちらを参照してみてください。

※回し者ではありません (笑

DOBON.NET | プログラミング道 | プログラミング掲示板