TCP/IPを使用して大量のデータを転送する方法

更新しました Aug 12, 2019

使用製品

Software

  • LabVIEW

問題

10×50,000要素の配列に測定データを保存しました。このデータをLabVIEWから別のコンピューターに転送したいです。自分の知る限り、TCP/IPプロトコルの上限は65,535バイトです。データを送信する前に圧縮する方法や、この膨大な量のデータをリアルタイムで転送する方法はありますか?

解決策

LabVIEWのTCP書き込み関数とTCP読み取り関数は、基礎となるネットワーク接続に適した方法でデータを自動的に転送する高レベルの関数です。
 

上記の例では、TCP書き込み関数はユーザデータを分割し、複数のネットワークフレーム/パケットを使用して転送します。

追加情報

パケットサイズ

IPv4パケットは、65,535バイトのサイズに制限されています。ただし、TCP/IP接続の下位層は通常、パケットサイズが小さくなります。イーサネットの「最大伝送ユニット」(MTU)は約1,500バイトです。

 

 

帯域幅の考慮

TCP/IP接続の帯域幅は制限されていることに注意する必要があります。上記の問題で説明したようなタイプ倍精度浮動小数点数(DBL)である500,000要素の配列は、約4 MBのユーザデータに相当します。この配列を毎秒3回転送すると、すでに100MBit/sのファストイーサネット接続が過飽和状態になります。

 

 

サンプルコード

これは、LabVIEWのTCP関数を使用して上記の問題から配列を転送する方法の例です。最初にrecipient.viを実行し、次にsender.viを実行します。



 

このスクリーンショットは、上記のサンプルコードが実行されたときにイーサネット経由で転送される実際のネットワークフレームを示しています。



 

フレーム#1から#3は接続を設定し、フレーム#4はデータ長(4バイト)の送信、フレーム#5は配列を転送する最初のフレームです。フレーム#5以降のサイズはそれぞれ1514バイトです(フレーム#10のような受信者から送信者に送信される確認応答フレームを除く)。

この記事はお役に立ちましたか?

いいえ