ما هو البارمنر الثاني من TCSSocket.Send في روبي؟

StackOverflow https://stackoverflow.com/questions/1147557

  •  18-09-2019
  •  | 
  •  

سؤال

أنا أستخدم هذا الخط لإرسال رسالة عبر مقبس Ruby (1.8.7):

@@socket.send login_message, 0

(هذا يعمل بشكل جيد)

ما هي المعلمة الثانية ل؟ لا يمكنني العثور على طريقة الإرسال في Docs Ruby API ...

اعتقدت لأول مرة أنه كان بعض طول أسلوب C للرسالة. هذا هو السبب في أنني استخدمت login_message.length كمعلمة ثانية. هذا يعمل لكنني واجهت سلوكا غريبا:

كل شيء يعمل بشكل جيد عندما تكون المعلمة الثانية رقم فردي. إذا كان الرقم حتى يتم فقد الطابع الأخير في تلقي على الجانب الآخر (الجانب الآخر هو برنامج C ++ مع مقبس C). لقد تفقدت حركة مرور الشبكة مع Wireshark ولاحظت أن الحزم تبدو جيدة. جميع البيانات كاملة. لماذا فقدت الشخصية الأخيرة عندما أتلقى ذلك؟

شكرا لك lennart.

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

المحلول

هذه هي المعلمة الأعلام، نفس المعلمة الأخيرة إلى send() مكالمة النظام. عادة يجب أن يكون 0، ولكن قد يكون مثل Socket::MSG_OOB (لإرسال البيانات خارج النطاق). ل Ruby 1.9 هذا موثقة تحت basicsocket..

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