-1

ここで見つけた例に基づいて単純なファイル送信方法を実装していますが、実際のバイトを送信する前にファイル名やタイプを送信する方法についての参照を見つけるのに苦労しています。私が見たすべての例では、受信側でファイル名を手動で設定しました。

これまでのところ、文字列として個別に送信することだけを考えていましたが、これを行うための簡単で便利な方法が欠けているかどうかに興味がありました。では、TcpClient/TcpListener 内に、見逃したファイル名を送信する方法はありますか? これを行う一般的な方法はありますか?

必要に応じて、コードも投稿できます。

4

1 に答える 1

1

送信できるのは、バイトのフラットな配列である「データ」だけです。そのため、送信者とリスナーの両方がデータに適用するある種のプロトコルを使用する必要があります。

「2 ブロックのデータ」を転送したいと言うことができます。その場合、次のことができます。

  • 各ブロックのサイズを送信し、その後に実際のデータを送信し、その後に次のブロック サイズとデータを送信します。または、
  • 区切り文字を使用します(実際のデータにその区切り文字が含まれていない場合にのみ機能します(さらに、データ内の区切り文字をエスケープするなどの解決策があります))

または、次の内容を含む Xml ドキュメントを送信するなどして、データをフォーマットすることもできます。

<myData>
  <filename>txt.txt</filename>
  <data>F83BA=</data>
</myData>

問題はもちろん、Xml を検証するためにファイルの内容をエンコードする必要があることです (base64 エンコードなど)。

于 2013-04-09T08:57:07.450 に答える