UDP上の文字列として、Unrealエンジン内のSocketクラスにデータをストリーミングしています。これはスレッド化され、バックグラウンドで実行されます。キューにudpデータをストリームするC++?
私の読み取り機能がある:私は、その後Tick
、またはタイマーに、別のクラスからtranslate
変数を呼び出す
float translate;
void FdataThread::ReceiveUDP()
{
uint32 Size;
TArray<uint8> ReceivedData;
if (ReceiverSocket->HasPendingData(Size))
{
int32 Read = 0;
ReceivedData.SetNumUninitialized(FMath::Min(Size, 65507u));
ReceiverSocket->RecvFrom(ReceivedData.GetData(), ReceivedData.Num(), Read, *targetAddr);
}
FString str = FString(bytesRead, UTF8_TO_TCHAR((const UTF8CHAR *)ReceivedData));
translate = FCString::Atof(*str);
}
。
私のテストケースは、別のアプリケーションから増分する数字を送信します。
上記のRead関数の内部からこの数値を印刷すると、インクリメンタルにカウントアップされます。 他のスレッドから印刷すると、いくつかの番号が欠落しています。
私はTick上で呼び出すため、これは処理時間のためにデータが欠落していると考えられます。
私の質問は:私は値を引いたときに、それは次の増分価値ではなく、現在の1になるように
は、入ってくるデータをキューにそこの方法ですか?これについて最善の方法は何ですか?
ありがとうございました。私には明らかにされていない場合はお知らせください。
あなたは明確ではありません。あなたはあなたの質問に明白に投稿した 'while'ループの存在をコメントで否定しています。 – EJP
ああ、私は深夜にこの質問を作成し、間違ったコードブロックを貼り付けたことをお詫びします。私は 'if'ループを更新する必要があります。 – anti