私は、データ、数値および/またはテキストを渡すために、2つのプログラム間で非同期TCPソケットメッセージを少し試しました。私がやったことは、各メッセージの先頭にキーワードを使い、その値を "|"で区切り、キャラクター。だから、メッセージは次のようになります。TCPソケットメッセージを分離する方法
"DATA | 490 | 40517.9328222222 | 1 | 6 | 11345 | 11347 | 11344 | 11345 | 106 | 40517.8494212963" 私が最もとして、1024年に読み出しバッファサイズを設定
メッセージの長さはその長さになります。しかし時には私はいくつか一緒に1024文字未満の短いメッセージをすばやく送信することがあります。そうすれば、それは一度に読み込まれるようです。 1024文字以上のメッセージを送信すると、分割されます。だから、私はこれをどう扱うべきかアドバイスを求めている。各メッセージの開始や終了に特殊文字を使用する必要がありますか?
ありがとう!シリアライズの意味は?それはWindows標準のPCにも適用されますか?最後のコメントでは、受信したメッセージに応じてバッファサイズを変更する必要がありますか?どのように動作しますか?メッセージがすでに読み込まれるまで、メッセージの長さはわからないので、あなたが意味することを正確に理解できません。 Btw;送信者側でメッセージを分割するのがポイントか、それともパフォーマンスに影響はありませんか?サイズは200msごとに50文字のメッセージになり、まれに50,000〜400,000文字のメッセージになります。 – bretddog
シリアライズとは、単に「文字列として出力する」ことを意味します。 @terminusからの提案はこれを行うための合理的な方法です - メッセージの長さを固定長の文字列に変換すると、受信側で 'unsigned int'に簡単に変換されます。その多くのバイトを最初に固定サイズのバッファに読み込み、残りのメッセージを受け取るバッファを割り当てるように要求できます。送信側でメッセージを分割しないでください - TCP/IPスタックは必要なパケット化を実行します。 –
よろしく!私は今それを理解していると思ってください:) – bretddog