
環境 [XP VB6.0]
お世話になります。
RS-232Cのクロスケーブルで2台のPCを接続し、一方のPCにあるファイルをもう一方のPCに送信し、受信したファイルを保存するというプログラムを作成しないといけません。
現状、フォーム上でコモンダイアログによりファイルを選択し、選択したファイルが、フルパスでテキストボックスに表示されます。
送信ボタンをクリックするとファイルの送信処理を開始し、受信側は受け取ったファイルを保存するという流れを作りたいのです。
しばらく調べたのですが、なかなかクリティカルする回答を見つける事が出来なかったので質問させていただきます。
もうこのような転送手段は使わないと思いますが・・・。
MSCommコントロールを使用し、文字の送受信程度であればできたのですが、MSCommではファイル転送はできないのでしょうか?
送信側、受信側のプログラムをご教授いただければと思います。
つたない文章で申し訳ありません。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
>この記述で、バイナリモードで開いたファイルを
>あたかもコピーしたかのような形で、別のファイルとして書き込む事が出来ますが、
>このbytBufAll()の内容を転送し、Putステートメントを受信側で行うと言う考え方で
>間違いないでしょうか?
微妙にちがう気がします。
Putはファイルへの出力ステートメントですから、「受信側でおこなう」ものではありません。
つまり、Putに相当する全バイト送信関数を「送信側PC」で実装し、
加えて、これを受信してファイルに落とす受信関数を「受信側PC」に
実装する必要があります。
提示されているプログラムではbytBufAllの最大数が指定されていないので
プログラム的にもまずいとおもいます。
あえてこれを利用するならLOFでファイルのサイズ分を得て
Redimするのが定石かな。
そのあと、よみだされたbytBufAllを1バイトづつMSCommに送出するのを
繰り返せばよいとおもいます。
受信側にそれなりの速度があって、受信バッファももっているようなら
数十バイトづつおくるのもありかとおもいます。
ただ、受信側ではファイルの終端であることが認識できませんから
前述のように、ファイル終端をなんらかの形で伝えられていること
が前提ですし、通信途絶などの不慮の状態を検出できるように
プログラム構造を考えておくことが必須です。
techa様
たびたびありがとうございます。
ひとまず、送信側のPGを作成し、受信側のPGを作成しているところです。
bytBufAll()の内容を受信し、ファイルに書き込んでも文字化等がおこり、うまく開けない状態ではあります。
もう少し試行錯誤してみて、どうしてもうまく行かない場合はまた質問を上げたいと思います。
お力を貸していただき本当にありがとうございました。
No.2
- 回答日時:
まず、RS232Cでもバイナリファイルの転送は可能です。
ただ、考えなければならないことが増えるので、何かしらの方法が
必要とされるだけです。
RS232Cでの転送がキャラクタ転送となるときは、
表示キャラクタ以外の文字を制御文字として扱えるので、
データの終端などを正確に把握することが可能です。
これに対して、バイナリの場合は&h00~&hffまでのすべての
コードが出現可能であって、データの区切りの認識ができなく
なるからです。
これでは、受信側のPCはいつ伝送終了になったのか、把握するすべ
がありませんね。
そこで伝送のプロトコルを定めることになるのですが、それには
ANo1さんのように、全部テキスト化しておくるほうほうもわかりやすくて
よいとおもいます。ただ、このようにおこなうと
実際のバイト数*(1バイトを表現する文字数)+α
の時間がかかってしまいます。
あるいは、先に全体のバイト長をキャラクタでおくっておいて、その後は
一定バイト数をバイナリでおくる、というのも手ですね。
昔からある手法ではXMODEMやYMODEMなどの方法もあります。
しらべてみるのもいいでしょう。
いまどきなら、一旦BASE64でエンコードして全部テキスト化してしまい、
これをそのまま転送し、受信PCで再度デコードするというのもありかも
しれません。
VBならこちらのほうがサンプルをみつけやすいようにおもいます。
techa様
ご返答ありがとうございます。
さらに質問になりますが、
Dim bytBufAll() as byte
Open FILENAME1 For Binary As #1
Get #1, , bytBufAll() 'ファイル全体を読み込む
Open FILENAME2 For Binary As #2
put #2, , bytBufAll() 'ファイルを書き込む
この記述で、バイナリモードで開いたファイルを
あたかもコピーしたかのような形で、別のファイルとして書き込む事が出来ますが、このbytBufAll()の内容を転送し、Putステートメントを受信側で行うと言う考え方で間違いないでしょうか?
No.1
- 回答日時:
MSCommコントロールには直接ファイルを転送する機能はありません。
その機能はあなたが作ることになります。
(それがファイル転送のプロトコルとなります)
ファイルを転送するには最低限
1.ファイル名を送る
2.ファイルの中身を送る。
の2段階の処理が必要です。
スマートでは無いけど簡単な方法を示します。(概念だけなのでテスト無し)
送信側
(1)ファイル名をテキストで送る。
(2)ファイルをバイナリモードで開く。
(3)1バイト読み込む。
(4)読み込んだデータをCstr関数で数値文字列にして送る。
(5)ファイルがEOFでなければ(3)に戻る。
(6)-1を送ってファイル終了を知らせる。
(7)ファイルを閉じる。
(8)終わり
受信側
(1)ファイル名を受け取る。
(2)受け取ったファイル名(パス部分は削除)でバイナリファイルを開く。
(3)データを1行受信する。
(4)データが-1なら(7)へいく。
(5)受信したデータをバイト変数に入れて、ファイルへ1バイト書込む。
(6) (3)へ戻る。
(7)ファイルを閉じる。
(8)終わり
Hayashi_Trek様
早速のご回答ありがとうございます。
ファイルそのものは遅れないんですね・・・。
例えば、ワードデータとかエクセルデータはたまたビットマップデータ等、中身がテキストとは限らないファイル等のやり取りはできないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- PDF 保存したPDFファイルが開けなくなり、困っています 1 2022/09/15 21:08
- その他(クラウドサービス・オンラインストレージ) Onedriveで実現したい事。2台のPC間で。 2 2023/04/10 20:42
- Outlook(アウトルック) w10からw11にバージョンアップ。アウトルックがクラウドと連携…そのためか、連絡先が消失!! 3 2023/05/09 18:34
- PHP a href リンクタグでだけで 送信が できちゃっています。 1 2022/04/18 04:25
- その他(Microsoft Office) officeのWordで作成した文章をメール添付してしたい 3 2023/08/07 07:12
- Outlook(アウトルック) アイホンで撮った写真を一枚だけPCに移し画像を縮小してWebメールに添付して送信する方法 1 2022/04/22 15:33
- Android(アンドロイド) Aloha Browser でダウンロードしたファイルをPCに転送するには? 1 2022/05/23 18:54
- Word(ワード) PCで作ったwordをスマホで編集しようとすると「このファイルは読み取り専用です。」と表示される。 3 2023/05/30 14:51
- その他(メールソフト・メールサービス) Gメールについて質問 6 2023/06/14 18:02
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ダンプツール作成… 行き詰まり...
-
RS232Cを用いたSCIでのシリアル...
-
C言語のプログラムについて質問...
-
VBScriptでバイナリファイルア...
-
chr関数の戻り値について質問で...
-
バッファとは何ですか
-
教えて!イラレ→htmlへのtextコ...
-
ストリームの意味がいまいちですが
-
COBOL で組まれたシステムのデ...
-
CADデータを表示したい
-
VC6.0 Relese版、Debug版について
-
fgetsでファイルの内容を読み込む
-
双方向リストへのデータ登録
-
javaでこんなアプリ実現できる...
-
BBSのCGIスクリプトについて
-
CSVの先頭の不要コメント切り飛...
-
ファイルの入力がうまくできま...
-
ADボードプログラムC++
-
Delphiでゲームのマップ作成【...
-
バイナリファイルの比較につい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッファとは何ですか
-
Microsoft VBAで2GBを超えるフ...
-
EXCEL VBAでテキストファイルの...
-
VBA バイナリ―から文字列にす...
-
エラー:ストリームの終わりを...
-
ページ読み込み時に自動的にsub...
-
EOF
-
エクセルVBA 2千万行のCSVファ...
-
入力ファイルをバイナリにする利点
-
【Teraterm】filewritelnについて
-
【python】Excelファイルを読み...
-
EXCEL VBAで、バイナリデータの...
-
FTPでエクセルをPUTするとファ...
-
テキストデータをSQLServerに取...
-
C言語とシリアル通信の送受信...
-
ビットマップファイル生成(C言...
-
pcxファイルを開きたい(RGBデ...
-
FTPを使わないファイルアップロ...
-
MacからWinにファイルを添付す...
-
HDDのバイナリイメージの取得方...
おすすめ情報