التعامل مع الحزمة Java NIO _التعامل مع الفئة Channels

اذهب الى الأسفل

التعامل مع الحزمة Java NIO _التعامل مع الفئة Channels Empty التعامل مع الحزمة Java NIO _التعامل مع الفئة Channels

مُساهمة من طرف زهراء في الإثنين أكتوبر 01, 2018 7:08 pm

بسم الله الرحمن الرحيم

أهلا بكم

فى درس سابق أخذنا فكرة بسيطة عن الحزمة NIO  و قلنا انها البديل الجديد للحزمة java io فى قراءة و كتابة البيانات الى الذاكرة وانها تعتمد على ثلاث فئات رئيسة فى ذلك :

1_ المخازن المؤقتة buffers
2_ القنوات channels
3_ المحددات Selectors

فى ذلك الدرس سناخذ بالتفصيل كيفية التعامل مع الفئة channels تلك الفئة تشبة الى حد ما الفئة streams فى الحزمة java io مع وجود بعض الاختلافات الجوهرية :

1_ يمكنك القراءة والكتابة فى ان واحد باستخدام الفئة channels . بينما الفئة streams عادةً تسخدم فى اتجاه واحد (قراءة أو كتابة).
2_يمكن قراءة البيانات وكتابتها بشكل غير متزامن مع استخدام الفئة channels
3_الفئة channels تقرأ دائمًا ، أو تكتب ، من المخزن المؤقت buffers

كما ذكر أعلاه ، تقرأ البيانات من قناة إلى مخزن مؤقت ، وتكتب البيانات من مخزن مؤقت إلى قناة. فيما يلي توضيح لذلك:

التعامل مع الحزمة Java NIO _التعامل مع الفئة Channels Overview-channels-buffers

فيما يلي أهم عمليات تنفيذ القنوات في Java NIO:

1_ FileChannel تستخدم تلك لقراءة البيانات من وإلى الملفات عن طريق فقط استدعاء الأسلوب getChannel على كائن RandomAccessFile أو FileInputStream أو FileOutputStream لانه لا يمكن FileChannel علي النحو التالي :

الكود:
RandomAccessFile raf = new RandomAccessFile ("somefile", "r");
FileChannel fc = raf.getChannel();


2_ DatagramChannel لقراءة وكتابة البيانات عبر الشبكة عبر UDP....ويتم الشفرة التالية لفتح قناة على النحو التالى :

الكود:
DatagramChannel ch = DatagramChannel.open();  

3_ SocketChannel لقراءة وكتابة البيانات عبر الشبكة عبر TCP.وذلك من خلال فتح قناة على النحو التالى :

الكود:
SocketChannel ch = SocketChannel.close();  
ch.connect(new InetSocketAddress("somehost", someport));  

4_ ServerSocketChannel بالاستماع إلى اتصالات TCP الواردة ، مثلما يفعل خادم الويب. لكل اتصال وارد يتم إنشاء SocketChannel.

الكود:
ServerSocketChannel ch = ServerSocketChannel.open();  
ch.socket().bind (new InetSocketAddress (somelocalport));  
زهراء
زهراء
........
........

تاريخ التسجيل : 18/02/2011
المساهمات : 395
النقاط : 664
التقيم : 53
الدولة : مصر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى