我有一個跟蹤身體運動的應用程序,它也可以像服務器一樣通過TCP發送身體跟蹤數據。 我的客戶端連接到服務器並獲取數據。需要幫助閱讀/解析TCP網絡代碼C++
數據被髮送到客戶端這樣的事情之前發生:
MTBF v10 = bodyPose2MTBF_v10(pose, m_startup, m_stream_position, 1);
ss << v10.get();
m_body_tracking_server->send(ss);
其中姿勢有等爲載體,腿,肩位置的頭部位置的所有信息etc..SS是新的stringstream,並且使用v10.get(),流以字符串形式填充姿勢。在send方法中,stringstream(ss)被髮送到客戶端。
在我的客戶端,我得到了stringstream。我也將它轉換回mtbf。問題是,代碼不是來自我,所以我不明白這一切。當姿態轉換爲MTBF這樣的事情發生了:
data.addFlag(0);
data << torso.x() << torso.y() << torso.z();
sensorConfig |= MTBFData_0_4::RightArmPosition;
data.addFlag(1);
.
.
.
我得到它添加一個「標誌」,這樣我可以識別例如軀幹,其次是軀幹的x y和z座標。但添加標記方法如下所示:
addFlag(unsigned char n)
{
m_flag |= (1i64 << n);
m_buf.replace(7+8, 8, reinterpret_cast<char*>(&m_flag), 8);
return *this;
}
這個方法究竟是什麼?轉移一些東西,並重新解釋字符......我真的需要幫助來理解這一點! 謝謝!
二進制操作和算術在這裏播放。你有「二進制或」** single **'|'並且用'<< ** ** n次** **左移位。不確定,但'1i64'可能是1 64位整數,即。 '0000000000000000000000000000000000000000000000000000000000000001',不知道我是否在這裏。 – Rolice 2013-03-15 11:00:14