- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:FTP ダウンロードの中断)
FTPダウンロードの中断と再開について
このQ&Aのポイント
- FTPダウンロードを中断し再開することはできるのか?タスク1の実行を阻害しないための解決策はあるのか?
- FTPダウンロードの中断と再開について検討しています。タスク1の実行を阻害しないための解決策を探しています。
- FTPダウンロードの問題:タスク1の実行を阻害せずにダウンロードを中断、再開する方法はあるのか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは あまり内容が理解できたませんが、解る範囲で書きます。 >一度受信を開始してしまったFTP転送を中断、再開はできるのでしょうか?。 中断は何かしらの方法で可能でしょうが、FTPでは1個のファイルの再開という ものはありませんので、1個のファイルは転送しなおしになると思います。 >TCP/IPにすればパケット単位のフロー制御ができることはわかっているのですが、 転送速度が問題になります。 ここの部分は勘違いです。 FTPもTCP/IP通信です。 プログラム構成は 作った通信プログラムー>FTP通信->TCP/IP通信 となっていますので、FTPを使用しないと考えているならば 作った通信プログラムー>FTPに相当する作ったプログラム->TCP/IP通信 となります。 FTPに相当する作ったプログラムはそう簡単には作れないです。 私からのアドバイス (1)ファイル転送が50msに終わる量であるのか計算する (2)終わらないのならば50msでの制御は元々不可能 (3)終わらないならば転送するファイルの量を減らす (4)FTPで転送はする (5)何を作成しているかわかりませんが工業用ロボット みたいなものであれば(1)(2)は必須 (6)ファイル転送は、システム的のあればいいだけ (時間とはあんまし関係ない)のならば、 ファイル送信を監視し、終わったならばデータを 更新する(50msの世界から切り離す) と適当なことを書いてます。それでは
補足
gamera4500様 Resありがとうございます。 ご指摘のようにファイルを送信時間50msec以下となるサイズに分割し、肝心のタスク1の終了直後にFTP受信を開始するようにやってみました。 しかし思わしい結果はえられませんでした。原因は不明ですがファイルが小さすぎてサーバであるWindows側でのファイルopen/closeのオーバヘッドの効果が働いたせいではないかと推察しています。 FTPもTCP/IPが基礎にあることは知識としては持っています。しかしTCP/IPはパケット単位で受信を停止再開することはできると思います。Windows側のサーバソフトも自作しているからです。クライアント側はタスク1仕掛中は禁止フラグをあげ、サーバ側に伝えます。本来ハンドシェークしてくれているはずのTCP/IPコネクションを別の信号で制御するという変則的な形にはなりますが。 ただ50msに一回5msの間だけ受信を中断するのですから回線にあるバッファ効果で持ちこたえてくれるような期待も若干はあります。 Linux側が必要とするデータ量は50msあたり32bitレジスタ数で2048です。Linux側のパケットの設定は3000弱となっており、レジスタ1個を10バイトの文字列にしているので256×10つまり256Reg伝送できます。であれば10パケットが約40msの間に受信できれば基本的には充足します。 Ehternetは100Baseですが、1パケットの受信時間は1~2msらしいので十分可能と判断しました。 50msの世界と切り離すため受信タスクの専用スレッド化、あるいは専用プロセス化により『BackGroud化』を試みたのですが、Single CoreのPowerPC、内部クロック300MHzではLinux OSも工夫の余地がなかったのでしょう。 何かご意見があればお願いいたします。