none
ネットワークでのバイナリ送受信 RRS feed

  • 質問

  • ネットワークにて接続した機器と通信を行いたいのですが。

    コマンド時は文字列、その後バイナリー(サイズは20K~1M)の送受信

    このような場合に適切に処理する方法はどのような手法をとればよいのでしょうか

    現在はバイナリーをすべてエンコードして文字にして送受信しているのですが、エンコード時間、送受信の時間がもったいなく感じています。

    定石などありましたらご指導ください。

    具体的には

    INIT ->

    バイナリ(20K) ->

      <-ACK1

    DATA ->

    バイナリ(1M) ->

     <-ACK2

    REQ ->

    <-バイナリ(120K)

    のようなやり取りです

     

    2007年1月18日 14:21

すべての返信

  • 1 MBytes ぐらいなら大したことはないかと思いますが……。

    バイナリーをすべてエンコードして文字にして送受信している

    使用する文字セットによって情報落ちが発生してしまいそうですが大丈夫ですか?

    何でどう送受信しているのか存じませんが、ネットワーク系のクラスは普通 Stream 型のインスタンスを使ってやり取りするはずですからバイナリ送受信は問題なく可能です。

    視点を変えて、文字列の方をバイナリにエンコードしてやって全てバイナリとして扱うってのはどうでしょうか。

    2007年1月18日 22:27
  • ftp みたいに、バイナリの送受信は別ポートでやるとか。

    # 文字列のコマンド送受信でポート番号を調停したりもできるはず。

     

    2007年1月19日 5:30
    モデレータ
  • 皆さん、ありがとうございます

    # 文字列のコマンド送受信でポート番号を調停したりもできるはず。

    これって 文字列(コマンドの種類)によって、あらたな接続を作成して

    その接続を使用するってことでしょうか?

    面白そうなので 試してみたいです。そういえば、どこかでサンプルを見たような・・・

    検索してみます

    2007年1月19日 21:22
  •  TACS さんからの引用

    # 文字列のコマンド送受信でポート番号を調停したりもできるはず。

    これって 文字列(コマンドの種類)によって、あらたな接続を作成して

    その接続を使用するってことでしょうか?

    そうです。

    エラー再送とか凝ったことを考えれなければ、データ転送の手順自体は物凄く簡単になります。

     

    2007年1月21日 8:21
    モデレータ