You are on page 1of 18

‫إختصارات‬

‫‪‬‬ ‫مقدمة ›‬
‫‪‬‬ ‫مصطلحات أساسية في عالم الشبكات ›‬
‫‪‬‬ ‫الكالسات التي نحتاجها للتعامل مع الشبكات ›‬
‫مقدمة‬
‫في اللغة اإلنجليزية‪ ,‬الفكرة األساسية من الشبكات هي ربط األجهزة على إختالف أنواعها مع بعض لخلق نوع من ‪ Network‬شبكة تعني‬
‫التواصل فيما بينهم‪ .‬فمثالً األجهزة الموصولة على الشبكة سواء كانت كمبيوترات أو هواتف أو سيرفرات‪ ,‬يمكنها مشاركة البيانات مع بعضها‬
‫‪.‬البعض بواسطة برامج معيّنة‬
‫‪Network‬‬ ‫شبكة ‪Programming‬‬ ‫خالل‬ ‫من‬ ‫آخر‬ ‫برنامج‬ ‫مع‬ ‫بياناته‬ ‫يشارك‬ ‫برنامج‬ ‫كتابة‬ ‫‪.‬تعني‬
‫العادي‬ ‫المستخدم‬ ‫عند‬ ‫مثبت‬ ‫برنامج‬ ‫و‬ ‫السيرفر‬ ‫على‬ ‫مثبّت‬ ‫برنامج‬ ‫يكون‬ ‫العادة‬ ‫‪.‬في‬
‫‪.‬الفكرة هنا بناء برامج للمستخدمين تجعلهم قادرين على التواصل مع بعضهم و مشاركة البيانات فيما بينهم‬
‫‪.‬عندما نقول مشاركة البيانات من خالل شبكة‪ ,‬نقصد بذلك أن الكمبيوتر سيشارك بياناته مع كمبيوتر آخر‬
‫‪ ).‬يمكن أن يكون كال الكمبيوترات موجودين على نفس الشبكة و يمكن أن يكون كل كمبيوتر منهم في بلد مختلف ( ال يهم‬
‫التي تحتوي على مجموعة ضخمة من الكالسات و ‪ java.net‬لبناء برامج يمكنها مشاركة البيانات مع بعضها عبر الشبكات‪ ,‬نستخدم الحزمة‬
‫‪.‬اإلنترفيسات المص ّممة خصيصيا ً لمشاركة البيانات عبر الشبكات‬

‫فائدة بناء برامج تتواصل مع بعضها من خالل شبكة‬


‫‪ .1‬مشاركة البيانات بين مختلف المستخدمين على الشبكة‪.‬‬
‫‪ .2‬تجميع البيانات التي نريد مشاركتها في مكان واحد‪ ,‬األمر الذي يجعلنا قادرين على التحكم في طريقة مشاركة هذه البيانات‪.‬‬

‫أفكار لبرامج تعمل على الشبكة‬


‫‪:‬يوجد أفكار كثيرة لبرامج يستخدمها الناس لمشاركة بياناتهم و التي يمكنك بناءها بنفسك أيضاً‪ ,‬أمثلة‬

‫برنامج محادثة‪ ,‬مثل ‪.Whatsapp ,Telegram ,Yahoo ,MSN‬‬ ‫‪‬‬

‫متصفّح‪ ,‬حيث يمكنك بناء متصفح مثل ‪.Opera Mini,Internet Explorer ,Google Chrome ,Mozilla FireFox‬‬ ‫‪‬‬

‫ألعاب‪ ,‬حيث أنه يمكنك بناء لعبة يستطيع فيها الالعبين تحد ّي بعضهم عن بعد‪.‬‬ ‫‪‬‬

‫برنامج إختبار‪ ,‬فمثالً‪ ,‬يمكنك بناء برنامج يجعل الطالب قادرا ً على إجراء أي إمتحان عن بعد و إرساله إلى مركز المؤسسة التعليمية الرئيسية عند‬ ‫‪‬‬

‫اإلنتهاء إلخ‪..‬‬

‫مصطلحات أساسية في عالم الشبكات‬


‫سنتطرق إلى بعضها في هذا الدرس‬ ‫ّ‬ ‫‪.‬في الجدول التالي وضعنا بعض المصطلحات األساسية في عالم الشبكات التي‬
‫‪.‬في مادة الشبكات سنشرحهم بتفصيل و دقة أكثر مالحظة‬
‫معناه‬ ‫المصطلح‬

‫‪ NIC‬إختصار لـ ‪ ,Network Interface Card‬و معناه كرت الشبكة‪.‬‬


‫‪NIC‬‬
‫كرت الشبكة هو قطعة إلكترونية يتم تركيبها في أي جهاز إلكتروني حتى يستطيع اإلتصال بالشبكات‪.‬‬

‫‪ MAC Address‬إختصار لـ ‪ ,Media Access Control Address‬و هو عبارة عن رقم كرت الشبكة الخاصة بالجهاز‪.‬‬

‫كل كرت شبكة يملك ‪ MAC Address‬موحّد‪.‬‬

‫الـ ‪ MAC Address‬يتألف من ‪ ,12 bytes‬كل ‪ byte‬فيهم يمكن أن يكون رقم بين ‪ 0‬و ‪ ,9‬أو حرف بين ‪ A‬و ‪.F‬‬

‫‪MAC‬‬
‫أمثلة‬
‫‪Address‬‬

‫‪00:1C:B3:09:85:15‬‬ ‫‪‬‬

‫‪00:B0:D0:86:BB:F7‬‬ ‫‪‬‬

‫‪00:1B:44:11:3A:B7‬‬ ‫‪‬‬

‫‪ IP Address‬إختصار لـ ‪ ,Internet Protocol Address‬و هو عبارة عن عنوان مؤقت يتم إعطائه ألي جهاز يريد‬

‫اإلتصال بالشبكة‪.‬‬

‫كل جهاز يريد اإلتصال بالشبكة يتم إعطائه ‪ IP Address‬مختلف‪.‬‬

‫الـ ‪ IP Address‬يتألف من أربعة أرقام‪ ,‬كل رقم فيهم يمكن أن يكون بين ‪ 0‬و ‪.255‬‬
‫‪IP‬‬

‫أمثلة‬ ‫‪Address‬‬

‫‪80.10.5.104‬‬ ‫‪‬‬

‫‪192.168.0.1‬‬ ‫‪‬‬

‫‪210.14.92.65‬‬ ‫‪‬‬
‫في العربية أيضا ً نقول بروتوكول‪ ,‬و هو عبارة عن مجموعة قواعد أساسية يجب إتباعها في كل عملية تواصل‪.‬‬

‫في عالم الشبكات يوجد بروتوكوالت كثيرة‪ ,‬كل واحد منهم مصمم لغرض معيّن‪.‬‬

‫أشهر البروتوكوالت‬

‫‪ TCP‬يستخدم عند نقل بيانات على الشبكة‪ ,‬يضمن وصولها إلى الجهة المطلوبة كما هي تماماً‪.‬‬ ‫‪‬‬
‫‪Protocol‬‬
‫‪ UDP‬يستخدم عند نقل بيانات على الشبكة‪ ,‬ال يهمه إذا فقد جزء من البيانات التي ت ّم إرسالها‪.‬‬ ‫‪‬‬

‫‪ HTTP‬يستخدمه المتصفح عندما تقوم بتصفح المواقع‪.‬‬ ‫‪‬‬

‫‪ FTP‬يستخدم عند تحميل أي نوع من الملفات‪.‬‬ ‫‪‬‬

‫‪ Telnet‬يستخدم للتحكم في البرامج عن بعد‪.‬‬ ‫‪‬‬

‫‪ POP 3‬يستخدم من قبل العميل إلستقبال الرسائل إلكترونية الواردة في بريده مع إمكانية حذفها‪.‬‬ ‫‪‬‬

‫‪ SMTP‬يستخدم من قبل العميل إلرسال رسائل إلكترونية إلى السيرفر‪.‬‬ ‫‪‬‬

‫في العربية نقول رقم البورت‪.‬‬

‫كل برنامج يرسل أو يستقبل بيانات على الشبكة يحتاج أن يفتح بورت خاص فيه على الجهاز‪.‬‬ ‫‪Port‬‬
‫رقم البورت يتيح للمستخدم إستخدام أكثر من برنامج يتعاملون مع الشبكة في نفس الوقت‪.‬‬ ‫‪Number‬‬
‫إذا ً رقم البورت يميّز البرامج التي تستخدم الشبكة عن بعضها البعض‪.‬‬

‫إختصار لـ ‪ ,Uniform Resource Locator‬و يعني كل المعلومات المذكورة في الرابط و التي تشير إلى مصدر محدد‬

‫للبيانات‪.‬‬

‫المعلومات األساسية في أي رابط‪:‬‬


‫‪URL‬‬
‫‪protocol://prefix.domain:port/path/filename‬‬

‫‪ protocol .1‬نضع مكانها إسم البروتوكول المستخدم في عملية اإلتصال مثل ‪.http‬‬

‫‪ prefix .2‬نضع مكانها في العادة ‪.www‬‬


‫‪ domain .3‬نضع مكانها إسم الموقع مثل ‪.harmash.com‬‬

‫‪ port .4‬نضع مكانها بورت البرنامج أو البروتوكول المستخدم من قبل العميل‪ ,‬فمثالً الـ ‪ http‬يستخدم البورت ‪.80‬‬

‫‪ path .5‬نضع مكانها إسم المجلد الذي نريد الدخول إليه على السيرفر‪.‬‬

‫‪ filename .6‬نضع مكانها إسم الملف الذي نريد تصفحه أو تحميله إلخ‪..‬‬

‫مالحظة عندما تتصفّح أي موقع في النت‪ ,‬حتى لو لم ترا جميع المعلومات التي ذكرناها لك عن الـ ‪ ,URL‬تأكد أن المتصفح‬

‫يكتبها عنك‪.‬‬

‫أمثلة‬

‫‪ ( harmash.com‬هذا إسم الموقع )‬ ‫‪‬‬

‫‪ www ( www.harmash.com‬هو الـ ‪ prefix‬و الذي ال يوجد حاجة لذكره )‬ ‫‪‬‬

‫‪ 80 ( http://www.harmash.com:80‬هو رقم البورت )‬ ‫‪‬‬

‫‪ java ( http://www.harmash.com:80/java‬هو إسم مجلد في الموقع )‬ ‫‪‬‬

‫( ‪ lesson_1.html‬هو إسم الملف الذي يفتح في‬ ‫‪http://www.harmash.com:80/java/lesson_1.html‬‬ ‫‪‬‬

‫المتصفح )‬

‫الـ ‪ Socket‬عبارة عن مجموعة الكالسات التي يمكن إستخدامها إلنشاء برامج تجعل المستخدمين قادرين على التواصل فيما‬

‫بينهم بشكل متزامن عبر شبكة النت‪ .‬و هي تض ّمن المعلومات األساسية التي نحتاجها إلجراء أي عملية إتصال‪:‬‬

‫‪Socket = IP Address + Port Number + Protocol‬‬

‫مثال‬ ‫‪Socket‬‬

‫في حال أردنا إرسال بيانات على الشبكة إلى شخص محدّد‪ ,‬علينا تحديد المعلومات التالية‪:‬‬

‫‪ .1‬البروتوكول الذي سنعتمده عليه إلجراء هذه العملية‪.‬‬


‫‪ .2‬عنوان الشخص الذي سنرسل له البيانات‪.‬‬

‫‪ .3‬رقم بورت البرنامج الذي سنستخدمه إلرسال البيانات‪.‬‬

‫خالصة‬
‫الـ‬ ‫خالل‬ ‫من‬ ‫الشبكة‬ ‫على‬ ‫جهاز‬ ‫ألي‬ ‫الوصول‬ ‫‪ IP‬يمكن‬ ‫فيه ‪Address‬‬ ‫‪.‬الخاص‬
‫‪.‬و كل تطبيق يتعامل مع الشبكات سواء إلرسال أو إستقبال بيانات يحتاج إلى رقم بورت خاص فيه ليميّزه عن باقي البرامج التي تستخدم الشبكة‬

‫الكالسات التي نحتاجها للتعامل مع الشبكات‬

‫‪ URL‬الكالس‬
‫‪.‬هذا الكالس مص ّمم بشكل عام لتجهيز روابط الملفات التي سنتعامل معها عن بعد عبر شبكة اإلنترنت‬
‫» تابع القراءة ‪ URL‬لمزيد من التفاصيل حول الكالس‬

‫‪ URLConnection‬الكالس‬
‫باإلضافة إلى أنّه يمكنّنا من ‪ URL,‬و هو يستخدم للقراءة و الكتابة في الملف الذي يشير له كائن الـ ‪ Abstract Class,‬هذا الكالس عبارة عن‬
‫الملف‬ ‫مع‬ ‫اإلتصال‬ ‫بإجراء‬ ‫المتعلقة‬ ‫المعلومات‬ ‫كافة‬ ‫تحديد‬ ‫و‬ ‫‪.‬معرفة‬
‫مرة تم فيها تحديث الملف‪ ,‬تاريخ صالحيّة الملف‪ ,‬إسم الكالس المناسب إلرسال المعلومات منه و استقبالها فيه إلخ‬
‫ّ‬ ‫آخر‬ ‫معرفة‬ ‫لنا‬ ‫يتيح‬ ‫ً‬ ‫ال‬ ‫فمث‬ ‫‪..‬‬
‫» تابع القراءة ‪ URL‬لمزيد من التفاصيل حول الكالس‬

‫‪ InetAddress‬الكالس‬
‫‪.‬هذا الكالس مص ّمم لتحليل عنوان الجهاز أو الموقع الذي نحاول اإلتصال به عن بعد عبر شبكة النت‬
‫» تابع القراءة ‪ InetAddress‬لمزيد من التفاصيل حول الكالس‬
‫‪ Socket‬كالسات الـ‬
‫عبارة عن مجموعة من الكالسات التي يمكن إستخدامها إلنشاء برامج تجعل المستخدمين قادرين على التواصل فيما بينهم بشكل ‪ Socket‬الـ‬
‫‪ java.net.‬متزامن عبر شبكة النت‪ ,‬لذلك تعتبر أهم كالسات موجودة في الحزمة‬
‫‪:‬تنقسم لقسمين أساسييّن ‪ Socket‬كالسات الـ‬
‫صصة لبناء برامج تستخدم البروتوكول ‪ ,UDP‬مثل الكالسات ‪ DatagramSocket‬و ‪.DatagramPacket‬‬ ‫‪ .1‬كالسات مخ ّ‬
‫صصة لبناء برامج تستخدم البروتوكول ‪ ,TCP‬مثل الكالسات ‪ Socket‬و ‪.ServerSocket‬‬ ‫‪ .2‬كالسات مخ ّ‬
‫‪ ServerSocket.‬و ‪ Socket‬في هذا الدرس سنشرح الكالسات‬
‫لمزيد من التفاصيل‬

‫إختصارات‬
‫‪‬‬ ‫مقدمة ›‬
‫‪‬‬ ‫‪ URL‬كونستركتورات الكالس ›‬
‫‪‬‬ ‫‪ URL‬دوال الكالس ›‬
‫‪‬‬ ‫أمثلة شاملة ›‬
‫مقدمة‬
‫و هي تعني كل المعلومات المذكورة في الرابط و التي تشير إلى مصدر محدد ‪ Uniform Resource Locator‬إختصار لـ ‪ URL‬الكلمة‬
‫‪.‬للبيانات‬
‫‪.‬مص ّمم بشكل عام لتجهيز روابط الملفات التي سنتعامل معها عن بعد عبر شبكة اإلنترنت ‪ URL‬الكالس‬

‫بنائه‬
‫‪public final class URL‬‬
‫‪extends Object‬‬
‫‪implements Serializable‬‬

‫المعلومات األساسية في أي رابط‬

‫‪protocol://host:port/path/filename‬‬

‫‪ protocol‬نضع مكانها إسم البروتوكول المستخدم في عملية اإلتصال مثل ‪.http‬‬ ‫‪‬‬

‫‪ host‬نضع مكانها إسم الموقع مثل ‪.harmash.com‬‬ ‫‪‬‬

‫‪ port‬نضع مكانها بورت البرنامج ( أو البروتوكول ) المستخدم من قبل العميل‪ ,‬فمثالً الـ ‪ http‬يستخدم البورت ‪.80‬‬ ‫‪‬‬

‫‪ path‬نضع مكانها إسم المجلد الذي نريد الدخول إليه على السيرفر مثل مجلّد ‪java‬‬ ‫‪‬‬

‫‪ filename‬نضع مكانها إسم الملف الذي نريد تصفحه أو تحميله إلخ‪ ..‬مثل الملف ‪lesson_1.html‬‬ ‫‪‬‬
‫‪.‬إذا قمنا بتركيب جميع المعلومات المتفرقة الذتي ذكرناها‪ ,‬سنحصل على رابط واحد و هو رابط الدرس األول في دروس جافا‬

‫مثال‬
‫‪http://harmash.com:80/java/lesson_1.html‬‬

‫‪ URL‬كونستركتورات الكالس‬
‫‪.‬فأنت تنشئ كائن يمثّل رابط ‪ URL‬بشكل عام عندما تنشئ كائن نوعه‬
‫‪ URL.‬الجدول التالي يحتوي على بعض الكونستركتورات الموجودين في الكالس‬

‫الكونستركتور مع تعريفه‬

‫)‪public URL(String url‬‬

‫نمرره له‪.‬‬
‫‪throws MalformedURLException‬ينشئ كائن نوعه ‪ URL‬من خالل النص الذي ّ‬
‫‪1‬‬
‫النص الذي نقوم بإدخاله يمث ّل كافة المعلومات التي تشك ّل رابط‪.‬‬

‫في حال وجود أي خطأ في المعلومات المدخلة فيه يتم رمي اإلستثناء ‪.MalformedURLException‬‬

‫)‪public URL(String protocol, String host, int port, String file‬‬

‫‪throws MalformedURLException‬ينشئ كائن نوعه ‪ URL‬مع تحديد البروتوكول ‪ +‬إسم الموقع ‪ +‬رقم البورت ‪ +‬إسم الملف‬
‫‪2‬‬
‫الذي سيتم الوصول إليه من خالله‪.‬‬

‫في حال وجود أي خطأ في المعلومات المدخلة فيه يتم رمي اإلستثناء ‪.MalformedURLException‬‬

‫)‪public URL(String protocol, String host, String file‬‬

‫‪throws MalformedURLException‬ينشئ كائن نوعه ‪ URL‬مع تحديد البروتوكول ‪ +‬إسم الموقع ‪ +‬إسم الملف الذي سيتم‬

‫الوصول إليه من خالله‪.‬‬ ‫‪3‬‬


‫عندما ال تقوم بتحديد رقم البورت بنفسك‪ ,‬يقوم باستخدام رقم البورت اإلفتراضي للبروتوكول المذكور‪.‬‬

‫في حال وجود أي خطأ في المعلومات المدخلة فيه يتم رمي اإلستثناء ‪.MalformedURLException‬‬
‫‪ URL‬دوال الكالس‬
‫‪ URL.‬الجدول التالي يحتوي على دوال الكالس‬

‫الدالة مع تعريفها‬

‫)(‪public String getHost‬ترجع نصّ يمث ّل البروتوكول ‪ +‬إسم الموقع الموضوعين في كائن الـ ‪.URL‬‬ ‫‪1‬‬

‫)(‪public String getAuthority‬ترجع نصّ يمث ّل البروتوكول ‪ +‬إسم الموقع ‪ +‬رقم البورت (في حال كان مذكور في الرابط)‬
‫‪2‬‬
‫الموضوعين في كائن الـ ‪.URL‬‬

‫)(‪public String getProtocol‬ترجع إسم البروتوكول الذي يستخدمه كائن الـ ‪ URL‬لإلتصال بالشبكة‪.‬‬ ‫‪3‬‬

‫)(‪public int getPort‬ترجع رقم البورت الخاص بالبروتوكول الذي يستخدمه كائن الـ ‪ URL‬لإلتصال بالشبكة‪.‬‬
‫‪4‬‬
‫ترجع ‪ -1‬في حال عدم تحديد رقم البورت‪.‬‬

‫)(‪public int getDefaultPort‬ترجع رقم البورت اإلفتراضي للبروتوكول الذي يستخدمه كائن الـ ‪ URL‬لإلتصال بالشبكة‪.‬‬
‫‪5‬‬
‫ترجع ‪ -1‬في حال عدم وجود رقم بورت إفتراصي‪.‬‬

‫)(‪public String getPath‬ترجع نص يمثّل مسار الملف المراد الوصول إليه عن طريق كائن الـ ‪.URL‬‬
‫‪6‬‬
‫ترجع نصّ فارغ في حال كان مسار الملف غير محدّد‪.‬‬

‫)(‪public String getFile‬ترجع نصّ يمثل مسار الملف المراد الوصول إليه عن طريق كائن الـ ‪ + URL‬الـ ‪( Query‬في حال كان‬

‫يوجد ‪ Query‬في الرابط)‪.‬‬ ‫‪7‬‬

‫في حال عدم وجود ‪ Query‬في الرابط‪ ,‬تعطي نفس نتيجة الدالة )(‪.getPath‬‬
‫ترجع نصّ فارغ في حال كان المسار غير محدّد في الرابط‪.‬‬

‫)(‪public String getQuery‬ترجع جزئية الـ ‪ Query‬الموضوعة في كائن الـ ‪.URL‬‬


‫‪8‬‬
‫ترجع ‪ null‬في حال عدم وجود ‪ Query‬في كائن الـ ‪.URL‬‬

‫)(‪public String getRef‬ترجع جزئية الـ ‪ Anchor‬في كائن الـ ‪.URL‬‬

‫‪ Anchor‬تعني عنصر محدّد موجود في صفحة الويب‪ ,‬و يقال له مرجع الصفحة‪.‬‬

‫لتحديد الـ ‪ Anchor‬في كائن الـ ‪ ,URL‬يجب وضعه بعد إسم الملف ( الذي شير إلى صفحة محددة في الويب ) و نضع الرمز ‪ #‬قبله‪.‬‬

‫‪9‬‬
‫مثال‬

‫هذا الرابط يفتح الصفحة الرابعة في المجلّد الذي يحتوي على دروس جافا و يضعك مباشرة ً في الفقرة الثانية‪.‬‬

‫‪article_2#http://harmash.com/java/lesson_4.html‬‬

‫)(‪public String getUserInfo‬ترجع معلومات المستخدم الموضوعة في كائن الـ ‪ URL‬في حال كانت ظاهرة فيه‪.‬‬

‫ترجع ‪ null‬في حال كان ال يوجد أي معلومة خاصة بالمستخدم في كائن الـ ‪.URL‬‬

‫أمثلة‬

‫‪hamash.com@info//:http‬‬ ‫‪10‬‬

‫هذا رابط يحتوي على إيميل شخص من موقع ‪ ,harmash.com‬إذا ً الدالة هنا ترجع ‪.info‬‬

‫‪hamash.com@info:1234//:http‬‬ ‫‪‬‬

‫هذا رابط يحتوي على إيميل و كلمة مرور شخص من موقع ‪ ,harmash.com‬إذا ً الدالة هنا ترجع ‪.info:123‬‬
‫مجرد أمثلة‪ ,‬كملة المرور يجب عدم إظهارها أبدا ً في الرابط حتى ال يتم سرقة الحساب‪.‬‬
‫ّ‬ ‫مالحظة هذه‬

‫)(‪public String toExternalForm‬ترجع محتوى كائن ‪ URL‬كنص واحد نوعه ‪.String‬‬


‫‪11‬‬

‫)(‪public String toString‬ترجع محتوى كائن ‪ URL‬كنص واحد نوعه ‪.String‬‬ ‫‪12‬‬

‫)‪public boolean equals(Object obj‬تقارن كائن الـ ‪ URL‬الذي قام باستدعائها مع الكائن الذي نم ّرره لها كـ ‪.Argument‬‬

‫إذا ً تقارن الرابط الذي قام باستدعائها مع الرابط الذي ّ‬


‫نمرره لها كـ ‪.Argument‬‬ ‫‪13‬‬
‫ترجع ‪ true‬في حال كانا متطابقين‪.‬‬

‫)‪public boolean sameFile(URL otherURL‬تقارن كائن الـ ‪ URL‬الذي قام باستدعائها مع كائن الـ ‪ URL‬الذي نمرره لها‬

‫كـ ‪.Argument‬‬
‫‪14‬‬
‫إذا ً تقارن الرابط الذي قام باستدعائها مع الرابط الذي ّ‬
‫نمرره لها كـ ‪.Argument‬‬

‫ترجع ‪ true‬في حال كانا متطابقين‪.‬‬

‫)(‪public InputStream openStream‬‬

‫‪throws IOException‬تنشئ إتصال مباشر بين البرنامج و الملف الموجود في الموقع الذي يشير له كائن الـ ‪.URL‬‬
‫‪15‬‬
‫في حال نجح اإلتصال‪ ,‬ترجع كائن نوعه ‪ InputStream‬يتيح لك قراءة محتوى هذا الملف فقط‪.‬‬

‫في حال فشل اإلتصال يت ّم رمي إستثناء‪.‬‬

‫)(‪public URLConnection openConnection‬‬

‫‪throws IOException‬تنشئ إتصال مباشر بين البرنامج و الملف الموجود في الموقع الذي يشير له كائن الـ ‪.URL‬‬ ‫‪16‬‬

‫في حال نجح اإلتصال‪ ,‬ترجع كائن نوعه ‪ URLConnection‬يتيح لك قراءة محتوى هذا الملف أو الكتابة فيه‪.‬‬
‫في حال فشل اإلتصال يت ّم رمي إستثناء‪.‬‬

‫)‪public URLConnection openConnection(Proxy proxy‬‬

‫‪throws IOException‬تنشئ إتصال بين البرنامج و الملف الموجود في الموقع الذي يشير له كائن الـ ‪ URL‬عن طريق ‪Proxy‬‬

‫‪.Server‬‬

‫إذا ً هنا يوجد طرف ثالث يلعب دور الوسيط بين البرنامج الذي يحاول الوصول للملف و الموقع الذي يملك الملف‪.‬‬

‫في حال نجح اإلتصال‪ ,‬ترجع كائن نوعه ‪ URLConnection‬يتيح لك قراءة محتوى هذا الملف أو الكتابة فيه‪.‬‬ ‫‪‬‬

‫في حال كان البروتوكول المستخدم ال يعمل مع ‪ ,Proxy Server‬يتم تجاهل ‪ Proxy Server‬و يت ّم وصل طرفي اإلتصال مباشرة ً مع‬ ‫‪‬‬
‫‪17‬‬
‫بعضهما‪.‬‬

‫في حال وضعت الثابت ‪ Proxy.NO_PROXY‬كـ ‪ ,Argument‬أيضا ً يتم تجاهل ‪ Proxy Server‬و يت ّم وصل طرفي اإلتصال‬ ‫‪‬‬

‫مباشرة ً مع بعضهما‪.‬‬

‫في حال حدث خطأ بسبب الملف يت ّم رمي اإلستثناء ‪.IOException‬‬ ‫‪‬‬

‫في حال كان المستخدم ال يملك صالحية إلستخدام الـ ‪ ,Proxy Server‬يت ّم رمي اإلستثناء ‪.SecurityException‬‬ ‫‪‬‬

‫رمي‬ ‫يت ّم‬ ‫صحيح‪,‬‬ ‫‪ Proxy‬بشكل‬ ‫الـ ‪Server‬‬ ‫نحدد‬ ‫لم‬ ‫وضعنا ‪ null‬كـ ‪ Argument‬أو‬ ‫حال‬ ‫في‬ ‫‪‬‬

‫اإلستثناء ‪.IllegalArgumentException‬‬

‫أمثلة شاملة‬

‫المثال األول‬
‫يشير إلى رابط درس معيّن من موقعنا‪ ,‬ثم حاولنا عرض كافة المعلومات التي يمكن استخراجها ‪ URL‬في المثال التالي قمنا بتعريف كائن نوعه‬
‫‪.‬من الرابط‬
‫أن أي معلومة حاولنا مالحظة‬ ‫تع ّمدنا عرض جميع المعلومات التي يمكن استخراجها من الرابط سواء كانت موجودة أو غير موجودة‪ ,‬الحظ ّ‬
‫‪.‬مكانها كما ذكرنا في الجدول السابق ‪ -1‬أو ‪ null‬عرضها و كانت غير موجودة في الرابط ستوضع القيمة‬
‫» شاهد المثال‬
‫المثال الثاني‬
‫نوعه‬ ‫كائن‬ ‫بتعريف‬ ‫قمنا‬ ‫التالي‬ ‫المثال‬ ‫موقعنا ‪ URL‬في‬ ‫من‬ ‫معيّن‬ ‫درس‬ ‫رابط‬ ‫إلى‬ ‫‪.‬يشير‬
‫يتيح لنا قراءة محتوى الملف الذي يشير إليه ‪ URLConnection‬و التي ترجع كائن نوعه )(‪ openStream‬بعدها قمنا باستدعاء الدالة‬
‫‪.‬الرابط‬
‫‪.‬حتى نستطيع قراءة محتوى الملف في البرنامج ‪ InputStream‬قمنا بتخزينه في كائن نوعه ‪ URLConnection‬كائن الـ‬
‫‪ data.‬إسمه ‪ String‬لقراءة محتوى الملف و تخزينه في متغيّر نوعه ‪ while‬في األخير قمنا بإنشاء حلقة‬
‫ي مالحظة‬ ‫‪.‬هنا ستتعلم طريقة قراءة محتوى أي ملف من موقع ما مهما كان نوعه سواء صورة‪ ,‬فيديو ملف نص ّ‬
‫» شاهد المثال‬

‫المثال الثالث‬
‫‪.‬عند قراءة محتوى الملف لتسريع عملية القراءة و بالتالي ألداء أفضل ‪ Buffer‬هذا نفس المثال الثاني من حيث الفكرة‪ .‬لكننا هنا إستخدمنا الـ‬
‫ي من موقع ما مع مراعاة أي نوع ترميز مستخدم في الملف مالحظة‬ ‫‪.‬هنا ستتعلم طريقة قراءة محتوى أي ملف نص ّ‬

‫يشير إلى رابط درس معيّن من موقعنا‪ ,‬ثم حاولنا عرض كافة المعلومات التي يمكن استخراجها ‪ URL‬في المثال التالي قمنا بتعريف كائن نوعه‬
‫‪.‬من الرابط‬
‫أن أي معلومة حاولنا مالحظة‬ ‫تع ّمدنا عرض جميع المعلومات التي يمكن استخراجها من الرابط سواء كانت موجودة أو غير موجودة‪ ,‬الحظ ّ‬
‫‪.‬مكانها كما ذكرنا في الجدول السابق ‪ -1‬أو ‪ null‬عرضها و كانت غير موجودة في الرابط ستوضع القيمة‬

‫المثال األول‬
‫‪URLDemo.java‬‬
‫‪1.‬‬ ‫‪package‬‬ ‫;‪url_example_1‬‬

‫‪2.‬‬
‫‪3.‬‬ ‫‪import‬‬ ‫;‪java.net.URL‬‬ ‫هنا قمنا باستدعاء الكالس ‪// URL‬‬

‫‪4.‬‬
‫‪5.‬‬ ‫‪public class‬‬ ‫‪URLDemo‬‬ ‫{‬

‫‪6.‬‬
‫‪7.‬‬ ‫‪public static void‬‬ ‫‪main‬‬ ‫{ )‪(String[] args‬‬

‫‪8.‬‬
‫‪9.‬‬ ‫اآلن سنحاول إجراء إتصال عبر الشبكة للوصول إلى ملف محدد ‪//‬‬
‫‪10.‬‬ ‫‪try‬‬
‫‪11.‬‬ ‫{‬
‫‪12.‬‬ ‫‪ URL‬إسمه ‪ url‬يشير إلى رابط الدرس الرابع في جافا الفقرة الثانية ‪//‬‬
‫هنا قمنا بتعريف كائن نوعه‬
‫‪13.‬‬ ‫‪URL url‬‬
‫=‬ ‫‪new‬‬ ‫;) "‪URL( "http://harmash.com:80/java/lesson_4.html#article_2‬‬
14.
15. // ‫هنا قمنا بعرض المعلومات المتوفرة و الغير متوفرة في الرابط‬
16. System. out .println( "URL : " + url.toString());

17. System. out .println( "Protocol : " + url.getProtocol());

18. System. out .println( "Authority : " + url.getAuthority());

19. System. out .println( "Host name : " + url.getHost());

20. System. out .println( "File name : " + url.getFile());

21. System. out .println( "Path : " + url.getPath());

22. System. out .println( "Port : " + url.getPort());

23. System. out .println( "Default Port : " + url.getDefaultPort());

24. System. out .println( "Reference : " + url.getRef());

25. System. out .println( "Query : " + url.getQuery());

26. System. out .println( "User Info : " + url.getUserInfo());

27. }
28. catch ( Exception e ) {

29. System. out .println(e.getMessage());

30. }
31.
32. }
33.
34. }

• ‫سنحصل على النتيجة التالية عند التشغيل‬.


URL : http://harmash.com:80/java/lesson_4.html#article_2

Protocol : http

Authority : harmash.com:80

Host name : harmash.com

File name : /java/lesson_4.html

Path : /java/lesson_4.html

Port : 80

Default port : 80

Reference : article_2

Query : null
‫نوعه‬ ‫كائن‬ ‫بتعريف‬ ‫قمنا‬ ‫التالي‬ ‫المثال‬ ‫موقعنا ‪ URL‬في‬ ‫من‬ ‫معيّن‬ ‫درس‬ ‫رابط‬ ‫إلى‬ ‫‪.‬يشير‬
‫يتيح لنا قراءة محتوى الملف الذي يشير إليه ‪ URLConnection‬و التي ترجع كائن نوعه )(‪ openStream‬بعدها قمنا باستدعاء الدالة‬
‫‪.‬الرابط‬
‫‪.‬حتى نستطيع قراءة محتوى الملف في البرنامج ‪ InputStream‬قمنا بتخزينه في كائن نوعه ‪ URLConnection‬كائن الـ‬
‫‪ data.‬إسمه ‪ String‬لقراءة محتوى الملف و تخزينه في متغيّر نوعه ‪ while‬في األخير قمنا بإنشاء حلقة‬

‫المثال الثاني‬
‫‪URLDemo.java‬‬
‫‪1.‬‬ ‫‪package‬‬ ‫;‪url_example_2‬‬

‫‪2.‬‬
‫‪3.‬‬ ‫‪import‬‬ ‫;‪java.net.URL‬‬ ‫هنا قمنا باستدعاء الكالس ‪// URL‬‬

‫‪4.‬‬ ‫‪import‬‬ ‫;‪java.io.InputStream‬‬ ‫‪// InputStream‬‬ ‫هنا قمنا باستدعاء‬

‫الكالس‬
‫‪5.‬‬
‫‪6.‬‬ ‫‪public class‬‬ ‫‪URLDemo‬‬ ‫{‬

‫‪7.‬‬
‫‪8.‬‬ ‫‪public static void‬‬ ‫‪main‬‬ ‫{ )‪(String[] args‬‬

‫‪9.‬‬
‫‪10.‬‬ ‫قمنا بتجهيز هذا المتغير من أجل تخزين محتوى الملف فيه ‪//‬‬
‫‪11.‬‬ ‫= ‪String data‬‬ ‫; ""‬

‫‪12.‬‬
‫‪13.‬‬ ‫‪//‬‬ ‫اآلن سنحاول إجراء إتصال عبر الشبكة للوصول إلى ملف محدد و قراءة‬
‫محتواه‬
‫‪14.‬‬ ‫‪try‬‬
‫‪15.‬‬ ‫{‬
‫‪16.‬‬ ‫‪ URL‬إسمه ‪ url‬يشير إلى رابط الدرس الرابع في جافا ‪//‬‬ ‫هنا قمنا بتعريف‬
‫كائن نوعه‬
‫‪17.‬‬ ‫= ‪URL url‬‬ ‫‪new‬‬ ‫;) "‪URL( "http://harmash.com/java/lesson_4.html‬‬

‫‪18.‬‬
‫‪19.‬‬ ‫هنا قمنا بتخزين الملف الذي يشير له الكائن ‪ URL‬في الكائن ‪// is‬‬
‫‪20.‬‬ ‫;)(‪InputStream is = url.openStream‬‬
‫‪21.‬‬
‫‪22.‬‬ ‫‪ is‬و تخزنهم في المتغير ‪// data‬‬ ‫هنا قمنا بإنشاء حلقة تمر على جميع‬
‫األحرف الموجودة في الكائن‬
‫‪23.‬‬ ‫‪int‬‬ ‫;‪c‬‬

‫‪24.‬‬ ‫‪while‬‬ ‫)‪((c = is.read()) != -1‬‬

‫‪25.‬‬ ‫{‬
26. data += ( char )c;

27. }
28.
29. // ‫هنا قمنا بإغالق اإلتصال مع الملف‬
30. is.close();
31.
32. // ‫هنا قمنا بعرض محتوى الملف‬
33. System. out .println(data);

34. }
35. catch ( Exception e ) {

36. System. out .println(e.getMessage());

37. }
38.
39. }
40.
41. }

• ‫ عند تشغيل البرنامج سيتم عرض محتوى الملف‬lesson_4.html ‫و الذي هو عبارة عن كامل كود الصفحة التي يشير لها الرابط‬.
ّ ‫الحظ‬
• ‫ و حللنا هذه المشكلة في المثال‬,‫ هذه المشكلة سببها عدم تحديد الترميز المستخدم في القراءة‬,‫أن األحرف العربية لم تظهر بشكل صحيح‬
‫الثالث‬.
<!DOCTYPE html>

<html lang="ar">

<head>

<meta http-equiv="expires" content="-1"/>

<meta http-equiv="pragma" content="no-cache"/>

<meta container="text/html; charset=UTF-8"/>


<link rel="stylesheet" type="text/css" href="../style/css/style.css"/>
<title>Java - أسلوب الكتابة</title>

<script src='/google_analytics_auto.js'></script></head>

<body>

<div id="header"></div>

<div id="topnavContainer"></div>

<div id="container">

<div id="rightSide"></div>
<div id="content">
‫‪ URL‬المثال الثالث في الكالس‬
‫‪.‬عند قراءة محتوى الملف لتسريع عملية القراءة و بالتالي ألداء أفضل ‪ Buffer‬هذا نفس المثال الثاني من حيث الفكرة‪ .‬لكننا هنا إستخدمنا الـ‬

‫المثال الثالث‬
‫‪URLDemo.java‬‬
‫‪1.‬‬ ‫‪package‬‬ ‫;‪url_example_3‬‬

‫‪2.‬‬
‫‪3.‬‬ ‫‪import‬‬ ‫;‪java.net.URL‬‬ ‫هنا قمنا باستدعاء الكالس ‪// URL‬‬

‫‪4.‬‬ ‫‪import‬‬ ‫;‪java.io.BufferedReader‬‬ ‫‪// BufferedReader‬‬ ‫هنا قمنا‬

‫باستدعاء الكالس‬
‫‪5.‬‬ ‫‪import‬‬ ‫;‪java.io.InputStream‬‬ ‫‪// InputStream‬‬ ‫هنا قمنا باستدعاء‬

‫الكالس‬
‫‪6.‬‬ ‫‪import‬‬ ‫;‪java.io.InputStreamReader‬‬ ‫‪// InputStreamReader‬‬ ‫هنا قمنا‬

‫باستدعاء الكالس‬
‫‪7.‬‬
‫‪8.‬‬ ‫‪public class‬‬ ‫‪URLDemo‬‬ ‫{‬

‫‪9.‬‬
‫‪10.‬‬ ‫‪public static void‬‬ ‫‪main‬‬ ‫{ )‪(String[] args‬‬

‫‪11.‬‬
‫‪12.‬‬ ‫قمنا بتجهيز هذا المتغير من أجل تخزين محتوى الملف فيه ‪//‬‬
‫‪13.‬‬ ‫= ‪String data‬‬ ‫; ""‬

‫‪14.‬‬
‫‪15.‬‬ ‫‪//‬‬ ‫اآلن سنحاول إجراء إتصال عبر الشبكة للوصول إلى ملف محدد و قراءة‬
‫محتواه‬
‫‪16.‬‬ ‫‪try‬‬
‫‪17.‬‬ ‫{‬
‫‪18.‬‬ ‫‪ URL‬إسمه ‪ url‬يشير إلى رابط الدرس الرابع في جافا ‪//‬‬ ‫هنا قمنا بتعريف‬
‫كائن نوعه‬
‫‪19.‬‬ ‫= ‪URL url‬‬ ‫‪new‬‬ ‫;) "‪URL( "http://harmash.com/java/lesson_4.html‬‬

‫‪20.‬‬
‫‪21.‬‬ ‫هنا قمنا بتخزين الملف الذي يشير له الكائن ‪ URL‬في الكائن ‪// is‬‬
‫‪22.‬‬ ‫;)(‪InputStream is = url.openStream‬‬
‫‪23.‬‬
‫‪24.‬‬ ‫لحل مشكلة الترميز و وضع محتوى الملف في الـ ‪// Buffer‬‬
‫هنا قمنا بتحويل نوع الكائن ‪ is‬إلى النوع ‪InputStreamReader‬‬
‫‪25.‬‬ ‫= ‪InputStreamReader isr‬‬ ‫‪new‬‬ ‫‪InputStreamReader(is,‬‬ ‫;) "‪"UTF-8‬‬

‫‪26.‬‬
‫‪27.‬‬ ‫الكائن ‪ br‬يتيح لنا قراءة محتوى الملف الموجود في الـ ‪// Buffer‬‬
‫‪28.‬‬ ‫= ‪BufferedReader br‬‬ ‫‪new‬‬ ‫;)‪BufferedReader(isr‬‬

‫‪29.‬‬
‫‪30.‬‬ ‫‪ br‬و تخزنهم في المتغير ‪// data‬‬ ‫هنا قمنا بإنشاء حلقة تمر على جميع‬
‫األحرف الموجودة في الكائن‬
‫‪31.‬‬ ‫‪int‬‬ ‫;‪c‬‬

‫‪32.‬‬ ‫‪while‬‬ ‫)‪((c = br.read()) != -1‬‬

‫‪33.‬‬ ‫{‬
‫‪34.‬‬ ‫;‪data += ( char )c‬‬

‫‪35.‬‬ ‫}‬
‫‪36.‬‬
‫‪37.‬‬ ‫هنا قمنا بإغالق اإلتصال مع الملف ‪//‬‬
‫‪38.‬‬ ‫;)(‪is.close‬‬
‫‪39.‬‬ ‫;)(‪isr.close‬‬
‫‪40.‬‬ ‫;)(‪br.close‬‬
‫‪41.‬‬
‫‪42.‬‬ ‫هنا قمنا بعرض محتوى الملف ‪//‬‬
‫‪43.‬‬ ‫;)‪System. out .println(data‬‬

‫‪44.‬‬ ‫}‬
‫‪45.‬‬ ‫{ ) ‪catch ( Exception e‬‬

‫‪46.‬‬ ‫;))(‪System. out .println(e.getMessage‬‬

‫‪47.‬‬ ‫}‬
‫‪48.‬‬
‫‪49.‬‬ ‫}‬
‫‪50.‬‬
‫‪51.‬‬ ‫}‬

‫‪.‬و الذي هو عبارة عن كامل كود الصفحة التي يشير لها الرابط ‪ lesson_4.html‬عند تشغيل البرنامج سيتم عرض محتوى الملف •‬
‫>‪<!DOCTYPE html‬‬

‫>"‪<html lang="ar‬‬

‫>‪<head‬‬
<meta http-equiv="expires" content="-1"/>

<meta http-equiv="pragma" content="no-cache"/>

<meta container="text/html; charset=UTF-8"/>


<link rel="stylesheet" type="text/css" href="../style/css/style.css"/>
<title>Java - ‫أسلوب الكتابة‬ </title>

<script src='/google_analytics_auto.js'></script></head>

<body>

<div id="header"></div>

<div id="topnavContainer"></div>

<div id="container">

<div id="rightSide"></div>
<div id="content">

You might also like

  • Adv 10
    Adv 10
    Document9 pages
    Adv 10
    hisham
    No ratings yet
  • Adv 12
    Adv 12
    Document5 pages
    Adv 12
    hisham
    No ratings yet
  • Adv 8
    Adv 8
    Document39 pages
    Adv 8
    hisham
    No ratings yet
  • Adv 9
    Adv 9
    Document11 pages
    Adv 9
    hisham
    No ratings yet
  • Adv 8
    Adv 8
    Document39 pages
    Adv 8
    hisham
    No ratings yet
  • Adv 7
    Adv 7
    Document6 pages
    Adv 7
    hisham
    No ratings yet
  • Adv 6
    Adv 6
    Document4 pages
    Adv 6
    hisham
    No ratings yet
  • Adv 3
    Adv 3
    Document42 pages
    Adv 3
    hisham
    No ratings yet
  • Adv 1
    Adv 1
    Document9 pages
    Adv 1
    hisham
    No ratings yet
  • Adv 5
    Adv 5
    Document22 pages
    Adv 5
    hisham
    No ratings yet
  • Adv 4
    Adv 4
    Document23 pages
    Adv 4
    hisham
    No ratings yet
  • Adv 2
    Adv 2
    Document55 pages
    Adv 2
    hisham
    No ratings yet