باستخدام NIO DatagramChannel وأنا بحاجة للتعامل مع قراءة جزئيا الحزم كتب /؟

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

  •  22-08-2019
  •  | 
  •  

سؤال

عند استخدام SocketChannel، تحتاج إلى الاحتفاظ القراءة والكتابة مخازن للتعامل مع يكتب جزئية ويقرأ.

ولدي شكوك المزعجة التي قد لا تكون مطلوبة عند استخدام DatagramChannel، ولكن المعلومات شحيحة.

ما هي القصة؟

وإذا ما أسميه (غير تسد) الحصول على (ByteBuffer) مرارا وتكرارا حتى أحصل على باطل العودة لقراءة جميع مخططات الانتظار؟

عند إرسال في غير مؤمن الوضع، يمكنني الاعتماد على الإرسال (ByteBuffer، SocketAddress) إما إرسال المخزن المؤقت كله أو رفضه كليا، أو هل أنا بحاجة لربما حفاظ على مخازن كتب جزئيا؟

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

المحلول

وكل قراءة لمخطط هو مخطط البيانات بأكمله، لا أكثر ولا أقل. هناك إشارة إلى أن هذا هو الحال في وصف java.nio.DatagramChannel.read:

<اقتباس فقرة>   

وإذا كان هناك أكثر بايت في   مخطط البيانات من البقاء في إعطاء   مخازن ثم ما تبقى من   يتم تجاهل مخطط البيانات بصمت

عند كنت تتعامل مع SocketChannel، انها تيار الرسالة؛ ليس هناك ضمان كم أو كيف البيانات قليلا ستحصل على كل قراءة، وTCP واعادة حزم منفصلة لإعادة رسالة من الجانب الآخر. ولكن لUDP (وهو ما كنت تقرأ مع DatagramChannel) كل علبة هي رسالة الذرية الخاصة بها.

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