سؤال

يمكن للشخص الرجاء المساعدة وأخبرني كيفية استخدام المخازن المؤقتة البروتوكول. في الواقع، أرغب في تبادل البيانات من خلال مآخذ تشغيل برنامج يعمل على UNIX والجري الآخر في النوافذ من أجل تشغيل دراسات المحاكاة.

البرامج التي تستخدم مآخذ لتبادل البيانات، مكتوبة في C / C ++، وسأكون سعيدا إذا كان لعنة يمكن أن يساعدني في استخدام المخازن المؤقتة البروتوكول من أجل تبادل البيانات في شكل:

struct snd_data{
    char *var="temp";
    int var1=1;
    float var2;
    double var2;
}

حاولت عدة طرق، ولكن لا تزال البيانات لا تزال غير مطلوبة بشكل صحيح. أي مساعدة سيكون موضع تقدير جدا

شكرا لمساعدتك،

هل كانت مفيدة؟

المحلول

تبدأ بتحديد رسالتك في ملف .proto:

package foo;

message snd_data {
  required string var= 1;
  required int32 var1 = 2;
  optional float var2 = 3;
  optional double var3 = 4;
}

(أعتقد أن تعويم ومضاعف في الواقع متغيرات مختلفة ...)

ثم تجميعها باستخدام protoc ثم لديك رمز تنفيذ المخزن المؤقت الخاص بك.

لمزيد من المعلومات، انظر: http://code.google.com/apis/protocolbuffers/docs/cpptutorial.html.

نصائح أخرى

كيف تكتب رسائلك إلى المقبس؟ protobufs ليست حساسة الإصنانية نفسها، ولكن لا يحدد protobufs آلية النقل - يحدد protobuf تعيين بين الرسالة ونموذجها المسلح (وهو سلسلة من البايت (8 بت) وهو لك المسؤولية عن نقل هذا التسلسل البايتات إلى المضيف البعيد.

في حالتنا، نحدد بروتوكول نقل بسيط للغاية؛ أولا، نكتب حجم الرسالة كعدد صحيح 32 بت (نبيذ كبير)، ثم يأتي الرسالة نفسها. (تذكر أيضا أن رسائل Protobuf ليست محددة ذاتيا، مما يعني أنك بحاجة إلى معرفة الرسالة التي ترسلها. هذا يدار عادة من خلال وجود المجمع رسالة تحتوي الحقول الاختيارية لجميع الرسائل التي تريد إرسالها. راجع موقع Protobuf ومحفوظات القائمة البريدية لمزيد من المعلومات حول هذه التقنية.)

هل كلا الجهازين x86؟ وإلا فستحتاج إلى مشاهدة الاختلافات الإندية الكبيرة والقليل. لها أيضا تستحق الاهتمام بالتعبئة بنية. يمكن أن يكون مؤشر المرور مشكلة أيضا بسبب مؤشر الحقائق أحجام مختلفة على منصات مختلفة. في كل شيء هناك عدد قليل جدا من المعلومات في مشاركتك ليقول، بالتأكيد، ما الذي يحدث خطأ ...

تكمن الإجابة في نبيذة البيانات التي يتم نقلها، وهذا شيء تحتاج إلى التفكير بعناية فائقة والتحقق منه. نظرة هنا لإظهار ما يمكن أن تفعله الانتخاب وتسبب في أن يفسد البيانات على كل من المتلقي والمرسل. لا يوجد هذا مقياس مثالي لنقل البيانات بسلاسة، فقط لأن البيانات المرسلة من مربع UNIX تضمن البيانات الموجودة على مربع Windows سيكون بنفس الترتيب من حيث بنية الذاكرة للبيانات. كما ستظل حشوة الهيكل الموجود في صندوق UNIX مختلفا عن الحشو على مربع Windows، فهذا يتلخص كيفية استخدام مفاتيح سطر الأوامر، والتفكير في محاذاة الهيكل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top