Visual C# .NET

Page 1

‫‪ | 1‬صفحة‬

‫ثشِغخ رغج‪١‬مبد اٌشجىبد‬ ‫ثبعزخذاَ‬ ‫‪Visual C# .NET‬‬ ‫‪Part 1‬‬


‫‪ | 2‬صفحة‬

‫السالم عليكن ورمحة اهلل وبركاته‬

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

‫درص بسيط جدا نهتعزيف بكيفية إَشاء اتصال و إرسال بياَات بيٍ حاسبيٍ يىصىنيٍ عهً شبكة يحهية يٍ خالل تطبيق‬ ‫بزيجي في َظاو انتشغيم ‪Windows XP‬‬

‫هذا اندرص إهداء إنً طالب األية اإلساليية و انعزبية وهى بزسى األياَة ال يحق ألحد وضع اسًه عهيه أو انقياو بئضافة‬ ‫يعهىيات عهيه‬

‫يالحظة‬

‫انبزَايج انًثال يزفق يع اندرص‬

‫يعهىيات عٍ انًؤنف ‪:‬‬ ‫انبهد ‪ :‬انجًهىرية انعزبية انسىرية ‪ -‬يديُة ديشق‬ ‫انًزحهة اندراسية ‪ :‬انسُة انثانثة بكانىريىص تكُىنىجيا انًعهىيات‬ ‫انجايعة االفتزاضية انسىرية ‪Syrian Virtual University‬‬ ‫‪E-Mail : munichbayrn@hotmail.com‬‬

‫رحى اهلل يٍ أهدي إني عيىبي‬ ‫أرجىا يًٍ نديه يالحظات عهً هذا اندرص أٌ يتكزو عهي بًالحظاته و َصيحته و نه جشيم انشكز‬

‫اٌٍ‪ ُٙ‬ػٍّٕب ِب ‪ٕ٠‬فؼٕب ‪ ٚ‬أفؼٕب ثّب ػٍّزٕب ‪ ٚ‬صدٔب ػٍّب‬


‫‪ | 3‬صفحة‬

‫ِمذِخ خبطخ ثبٌمبسا‬

‫ػض‪٠‬ض‪ ٞ‬اٌمبسا‬ ‫ٌى‪ ٟ‬رى‪ ِٓ ْٛ‬اٌز‪ٚ ٓ٠‬ع‪ٙ‬ذ ٌ‪٘ ُٙ‬زا اٌذسط ‪٠‬غت أْ ‪٠‬زؾمك ف‪١‬ه أِشاْ ال صبٌش ٌ‪ّٙ‬ب ‪ّ٘ ٚ‬ب ‪:‬‬ ‫‪ٌ .1‬ذ‪٠‬ه خجشح ال ثأط ث‪ٙ‬ب ف‪ ٟ‬ثشِغخ رغج‪١‬مبد ‪ ِٓ Windows Application‬خالي ‪Visual Studio‬‬ ‫‪C# .NET‬‬ ‫‪ٌ .2‬ذ‪٠‬ه إٌّبَ ثبٌّجبدا إٌظش‪٠‬خ ٌٍشجىبد‬ ‫ؽ‪١‬ش ٌٓ أل‪ َٛ‬ثبالعزفبضخ ف‪ ٟ‬ششػ ِفب٘‪ ُ١‬اٌشجىبد إٌظش‪٠‬خ أ‪ ٚ‬اٌجشِغخ ثٍغخ ‪C#‬‬

‫ِمذِخ ػبِخ‬

‫ف‪ ٟ‬اٌؾم‪١‬مخ إْ ثشِغخ رغج‪١‬مبد اٌشجىبد ِٓ خالي أ‪ٌ ٞ‬غخ أِش وج‪١‬ش عذا ‪ِٚ‬ؼمذ ‪ٌٍ ٚ،‬ز‪٠ ٞ‬ش‪٠‬ذ أْ ‪٠‬م‪ َٛ‬ثئٔشبء‬ ‫رغج‪١‬مبد وج‪١‬شح ف‪٘ ٟ‬زا اٌّغبي ‪٠‬ؾزبط إٌ‪ ٝ‬خجشح وج‪١‬شح ف‪ ٟ‬أٔظّخ رشغ‪ ً١‬اٌشجىبد ‪ِٚ ،‬ؼشفخ ػّ‪١‬مخ ف‪ ٟ‬عّ‪١‬غ‬ ‫اٌّفب٘‪ ُ١‬اٌخبطخ ثبٌشجىبد ثبإلضبفخ إٌ‪ِ ٝ‬ؼشفخ ِّزبصح ثبٌٕغجخ ٌٍغخ اٌجشِغخ اٌز‪٠ ٟ‬ش‪٠‬ذ ثٕبء اٌزغج‪١‬ك ِٓ‬ ‫خالٌ‪ٙ‬ب ‪.‬‬ ‫إْ ٘زا اٌذسط اٌز‪ ٞ‬ألذِٗ إٌ‪١‬ىُ ال ‪٠‬شىً ش‪١‬ئب ثبٌٕغجخ إٌ‪٘ ٝ‬زا اٌؼٕ‪ٛ‬اْ ( ثشِغخ رغج‪١‬مبد اٌشجىبد ) ‪ ،‬إّٔب ٘‪ٛ‬‬ ‫ٔظشح ف‪ ٟ‬عش‪٠‬ك ٘زا إٌ‪ٛ‬ع ِٓ اٌزغج‪١‬مبد ‪.‬‬ ‫إْ اٌغشع اٌشئ‪١‬غ‪ ِٓ ٟ‬اٌزغج‪١‬مبد ‪ Windows‬اٌخبطخ ثّغبي اٌشجىبد ٘‪ ٛ‬ػٍّ‪١‬خ إٔشبء ارظبي ‪ ٚ‬رجبدي‬ ‫اٌج‪١‬بٔبد ‪ ٚ‬إعشاء ػٍّ‪١‬بد اٌزؾىُ ‪ ٚ‬اٌّشالجخ ‪ ٚ‬إٌ‪ِ ٝ‬ب ٕ٘بٌه ث‪ ٓ١‬أع‪ٙ‬ضح اٌؾبع‪ٛ‬ة اٌّشث‪ٛ‬عخ ػٍ‪ ٝ‬اٌشجىخ ‪،‬‬ ‫‪٘ٚ‬زا اٌىالَ ‪ٕ٠‬غجك ػٍ‪ ٝ‬اٌؾبٌز‪ٓ١‬‬ ‫شجىخ االٔزشٔذ – شجىخ ػًّ فشد‪٠‬خ‬ ‫فّضال ػٍ‪ ٝ‬شجىخ االٔزشٔذ ‪ ،‬رؾزبط أؽ‪١‬بٔب إٌ‪ ٝ‬رؾّ‪ ً١‬أ‪ ٚ‬سفغ ٍِفبد ) ‪ ِٓ ( Download - Upload‬أ‪ ٚ‬إٌ‪ٝ‬‬ ‫ِ‪ٛ‬لغ ِؼ‪ ٛ٘ٚ ٓ١‬شىً ِٓ أشىبي رجبدي اٌج‪١‬بٔبد ‪.‬‬ ‫‪ ٚ‬أ‪٠‬ضب ِضً آخش اٌجشِغ‪١‬بد اٌىض‪١‬شح اٌز‪ ٟ‬رؤِٓ رجبدي اٌج‪١‬بٔبد ث‪ ٓ١‬األع‪ٙ‬ضح اٌؾبع‪ٛ‬ث‪١‬خ ػٍ‪ ٝ‬شجىخ فشد‪٠‬خ ‪.‬‬ ‫‪ٌٚ‬زٌه ‪ٚ‬فشد اٌّىزجخ ‪ ( Framework Class Library ) FCL‬اٌخبطخ ثج‪١‬ئخ ‪ .NET‬اٌؼذ‪٠‬ذ ِٓ اٌظف‪ٛ‬ف‬ ‫اٌغب٘ضح اٌز‪ ٟ‬رغبػذ اٌّغ‪ٛ‬س ػٍ‪ ٝ‬رغ‪٠ٛ‬ش رغج‪١‬مبد خبطخ ثّغبي اٌشجىبد ‪ ٚ ،‬ف‪٘ ٟ‬زا اٌذسط ع‪ٛ‬ف أل‪َٛ‬‬ ‫ثبعزخذاَ ٘زٖ اٌظف‪ٛ‬ف ثئٔشبء رغج‪١‬ك ‪٠‬م‪ َٛ‬ثئٔشبء ارظبي ‪ٔ ٚ‬مً ث‪١‬بٔبد ِٓ ع‪ٙ‬بص ‪٢‬خش ػٍ‪ ٝ‬اٌشجىخ ‪ٚ‬رٌه ِٓ‬ ‫خالي ٌغخ ‪ ، C#‬ف‪١ٙ‬ب ثٕب ‪............‬‬


‫‪ | 4‬صفحة‬

‫فظً اٌششػ إٌظش‪ٞ‬‬

‫إْ اٌىالَ اٌز‪ ٞ‬ع‪ٛ‬ف رمشأٖ ٕ٘ب ع‪ٛ‬ف ٔم‪ َٛ‬ثششؽٗ ػٍّ‪١‬ب ‪ٌ ،‬زٌه أسع‪ ٛ‬أْ رم‪ َٛ‬ثمشاءرٗ إٌ‪ ٝ‬إٌ‪ٙ‬ب‪٠‬خ د‪ًٍِ ْٚ‬‬ ‫‪ ،‬ؽ‪١‬ش إٔٔ‪ ٟ‬ع‪ٛ‬ف أل‪ َٛ‬ثبالخزظبس لذس اإلِىبْ إْ شبء اهلل ‪.‬‬

‫ِجبدا ٘زا إٌ‪ٛ‬ع ِٓ اٌزغج‪١‬مبد اٌجشِغ‪١‬خ‬ ‫إْ ِٓ أُ٘ اٌّجبدا ‪ٚ‬أ‪ٚ‬ضؾ‪ٙ‬ب ف‪ ٟ‬ػٍّ‪١‬خ إٔشبء ارظبي ث‪ ٓ١‬ع‪ٙ‬بص‪ِ ٓ٠‬شث‪ٛ‬ع‪ِ ٓ١‬ؼٍ‪ ٝ‬شجىخ ِؼ‪ٕ١‬خ ٘‪ ٟ‬اٌؼٕ‪ٔٛ‬خ ‪،‬‬ ‫ِبرا ‪٠‬ؼٕ‪ ٟ‬رٌه ؟‬ ‫ػٕذِب أس‪٠‬ذ أْ أل‪ َٛ‬ثبالرظبي ثؾبعت آخش ػٍ‪ ٝ‬اٌشجىخ اٌّؾٍ‪١‬خ ِٓ خالي اٌؾبعت اٌخبص ث‪ ٚ ٟ‬اٌّشث‪ٛ‬ط ػٍ‪ٝ‬‬ ‫اٌشجىخ أ‪٠‬ضب ‪٠ ،‬غت أْ أل‪ َٛ‬ثزؾذ‪٠‬ذ ػٕ‪ٛ‬اْ ٘زا اٌؾبعت اٌز‪ ٞ‬أس‪٠‬ذ االرظبي ثٗ ‪ ٚ‬اٌز‪١ّ٠ ٞ‬ضٖ ػٓ عّ‪١‬غ‬ ‫اٌؾ‪ٛ‬اعت األخش‪ ٜ‬اٌّشث‪ٛ‬عخ ػٍ‪ ٝ‬اٌشجىخ ‪ٚ ،‬وّب ٔؼٍُ أْ ٘زا اٌؼٕ‪ٛ‬اْ ػٍ‪ ٝ‬اٌشجىخ اٌّؾٍ‪١‬خ ‪٠‬ذػ‪ٝ‬‬ ‫‪IP Address‬‬ ‫أ‪٠‬ضب ‪ٛ٠‬عذ ِف‪ َٛٙ‬آخش ِشرجظ ثّف‪ ٛ٘ٚ IP Address َٛٙ‬اي ‪ِ ، Port‬برا ‪٠‬ؼٕ‪٘ ٟ‬زا ؟‬ ‫وّب لٍٕب فبْ ػٕ‪ٛ‬اْ اٌؾبعت ِف‪١‬ذ ف‪ ٟ‬ػٍّ‪١‬خ إٔشبء االرظبي ‪ٌ ،‬ىٓ ً٘ إٔشبء االرظبي ٘‪ ٛ‬فمظ غب‪٠‬زٕب ‪ٔ ،‬ش‪٠‬ذ‬ ‫أ‪٠‬ضب رجبدي اٌج‪١‬بٔبد ِغ اٌؾبعت ا‪٢‬خش ٌزٌه ٔؾٓ ثؾبعخ إٌ‪ ٝ‬ػٕ‪ٛ‬اْ اٌزغج‪١‬ك اٌجشِغ‪ ٟ‬اٌز‪ٔ ٞ‬ش‪٠‬ذ رجبدي اٌج‪١‬بٔبد‬ ‫ِٓ خالٌٗ ‪ ،‬ؽ‪١‬ش أٔٗ ػٍ‪ٔ ٝ‬ظبَ اٌزشغ‪٠ Windows ً١‬زُ رؾذ‪٠‬ذ ِب ‪٠‬غّ‪ ٝ‬ثبٌّٕفز ٌىً رغج‪١‬ك ‪٠‬ؼًّ ػٍ‪ٔ ٝ‬ظبَ‬ ‫اٌزشغ‪ِ ٛ٘ٚ ً١‬ب ‪٠‬ذػ‪ ٝ‬ثبالٔىٍ‪١‬ض‪٠‬خ ‪Port‬‬ ‫٘زا إٌّفز ٘‪ ٛ‬سلُ ‪١ّ٠‬ض اٌزغج‪١‬ك اٌجشِغ‪ ٟ‬ػٓ وبفخ اٌزغج‪١‬مبد اٌجشِغ‪١‬خ األخش‪ ٜ‬اٌؼبٍِخ ػٍ‪ٔ ٝ‬ظبَ اٌزشغ‪. ً١‬‬ ‫‪٘ٚ‬ىزا رش‪ ٜ‬أْ اٌؼٕ‪ٛ‬اْ اٌىبًِ ‪٠‬زأٌف ِٓ عضأ‪) IP Address , Port ( ٓ٠‬‬ ‫ثبإلضبفخ إٌ‪ٕ٘ Port ٚ IP Address ٝ‬بن ِف‪ َٛٙ‬آخش ال ‪٠‬مً أّ٘‪١‬خ ػٓ ِف‪ َٛٙ‬اٌؼٕ‪ٛ‬اْ ‪ ٛ٘ٚ‬اٌجش‪ٚ‬ر‪ٛ‬و‪ٛ‬ي ‪،‬إْ‬ ‫ِٓ أش‪ٙ‬ش اٌجش‪ٚ‬ر‪ٛ‬و‪ٛ‬الد اٌّغزخذِخ ف‪ ٟ‬ر‪١ٙ‬ئخ االرظبالد ‪ ٚ‬رؼش‪٠‬ف و‪١‬ف‪١‬خ ٔمً اٌج‪١‬بٔبد ث‪ ٓ١‬اٌؾ‪ٛ‬اعت‬ ‫‪UDP – TCP‬‬ ‫رف‪١‬ذ ٘زٖ اٌجش‪ٚ‬ر‪ٛ‬و‪ٛ‬الد ف‪ ٟ‬رؾذ‪٠‬ذ اٌظ‪١‬غخ اٌز‪ ٟ‬ع‪١‬زُ ِٓ خالٌ‪ٙ‬ب رجبدي اٌج‪١‬بٔبد ث‪ ٓ١‬اٌؾ‪ٛ‬اعت ‪ ،‬ؽ‪١‬ش أٔٗ أٔ‪ٛ‬اع‬ ‫اٌج‪١‬بٔبد اٌز‪ّ٠ ٟ‬ىٓ أْ ٕٔمٍ‪ٙ‬ب ِخزٍفخ ‪ ٟ٘ ٚ ،‬ثبٌزبٌ‪ ٟ‬رؾزبط إٌ‪ ٝ‬و‪١‬ف‪١‬خ ٔمً ػجش اٌشجىخ ِخزٍفخ ؽغت عج‪١‬ؼخ‬ ‫٘زٖ اٌج‪١‬بٔبد ‪ ،‬إْ اٌز‪٠ ٞ‬ؾذد ٘زا األِش ٘‪ ٛ‬اٌجش‪ٚ‬ر‪ٛ‬و‪ٛ‬ي اٌّغزخذَ‬ ‫إْ ػٍّ‪١‬خ ٔمً اٌج‪١‬بٔبد ِٓ ع‪ٙ‬بص ؽبعت إٌ‪ ٝ‬آخش ػٍ‪ ٝ‬شجىخ ِؾٍ‪١‬خ رّضً ٔمً عّ‪١‬غ أٔ‪ٛ‬اع اٌج‪١‬بٔبد ‪ٚ‬اٌز‪ ٟ‬رشًّ‬ ‫ٔمً ٍِفبد ) ‪ٔ - ( Files‬مً ٔظ‪ٛ‬ص ) ‪ٔ - ( Text‬مً ط‪ٛ‬س ) ‪ٔ - ( images‬مً ط‪ٛ‬د ( ‪) Voice‬‬

‫يالحظة‬

‫‪ٛ٠‬عذ أِش شذ‪٠‬ذ األّ٘‪١‬خ ‪٠‬ز‪ٛ‬لف ػٍ‪ ٗ١‬ثٕبء اٌجشٔبِظ ‪٠‬غت أخزٖ ثؼ‪ ٓ١‬االػزجبس‬


‫‪ | 5‬صفحة‬

‫ػٕذِب ٔفىش ف‪ ٟ‬إٔشبء ثشٔبِظ ‪٠‬م‪ َٛ‬ثٕمً ٔ‪ٛ‬ع ِؼ‪ ِٓ ٓ١‬اٌج‪١‬بٔبد ػٍ‪ ٝ‬اٌشجىخ ‪٠‬غت األخز ثؼ‪ ٓ١‬االػزجبس ٔ‪ٛ‬ع‬ ‫اٌجش‪ٚ‬ر‪ٛ‬و‪ٛ‬ي اٌز‪٠ ٞ‬غت أْ ٔغزخذِٗ ؽ‪١‬ش أْ ثش‪ٚ‬ر‪ٛ‬و‪ٛ‬الد اٌشجىخ رخزٍف ِٓ ٔبؽ‪١‬خ ( اٌغشػخ ‪ ٚ‬األداء )‬ ‫‪ٌٚ‬زٌه ع‪ٛ‬ف أضشة ٘زا اٌّضبي اٌجغ‪١‬ظ ٌز‪ٛ‬ض‪١‬ؼ األِش‪:‬‬ ‫فّضال ػٕذِب أس‪٠‬ذ ٔمً اٌظ‪ٛ‬د ( وّب ف‪ ٟ‬ثشِغ‪١‬بد اٌذسدشخ اٌظ‪ٛ‬ر‪١‬خ ) ‪ ٟ٘ٚ‬ػٍّ‪١‬خ ؽشعخ رّضً رؾذ‪٠‬ب وج‪١‬شا‬ ‫ٌٍّجشِظ ‪ ،‬فبْ ٔ‪ٛ‬ع اٌجش‪ٚ‬ر‪ٛ‬و‪ٛ‬ي اٌّغزخذَ ‪٠‬غت أْ ‪٠‬ؾمك ػذح أِ‪ٛ‬س ِضً ‪:‬‬ ‫اٌغشػخ اٌىج‪١‬شح ٌٍٕمً ‪ -‬األداء اٌّزّ‪١‬ض ٌٍٕمً‬ ‫ؽ‪١‬ش أْ اٌظ‪ٛ‬د اٌؾ‪ ٟ‬اٌّجبشش ِٓ أشذ أٔ‪ٛ‬اع اٌج‪١‬بٔبد اٌز‪٠ ٟ‬غت أْ ‪٠‬زُ إ‪٠‬ظبٌ‪ٙ‬ب ثبٌذلخ إٌّبعجخ‬ ‫فؼٕذِب أس‪٠‬ذ إٔشبء ثشٔبِظ دسدشخ ط‪ٛ‬ر‪١‬خ فبْ اٌجش‪ٚ‬ر‪ٛ‬و‪ٛ‬الْ ‪ UDP , TCP‬ال ‪٠‬ؾممبْ اٌغشع ػٍ‪ ٝ‬اٌغ‪ٛ‬اء ‪ٚ‬‬ ‫رٌه ألْ ‪:‬‬ ‫‪‬‬ ‫‪‬‬

‫‪٠ : TCP‬ؾمك ‪ٚ‬ص‪ٛ‬ل‪١‬خ ػبٌ‪١‬خ ف‪ ٟ‬إ‪٠‬ظبي اٌج‪١‬بٔبد ثبٌذلخ اٌالصِخ ٌىٕٗ ال ‪٠‬ؾمك ششط اٌغشػخ ف‪ ٟ‬إٌمً‬ ‫‪٠ : UDP‬ؾمك اٌغشػخ ٌىٕٗ ال ‪٠‬ؾمك اٌ‪ٛ‬ص‪ٛ‬ل‪١‬خ اٌّغٍ‪ٛ‬ثخ‬

‫‪ٌ ٚ‬زٌه رُ ؽً ٘زٖ اٌّشىٍخ ِٓ خالي إ‪٠‬غبد ثش‪ٚ‬ر‪ٛ‬و‪ٛ‬ي ‪٠‬ؤِٓ ِ‪١‬ضاد وال اٌجش‪ٚ‬ر‪ٛ‬و‪ ٓ١ٌٛ‬اٌغبثم‪٠ ٚ ٓ١‬ذػ‪RTP ٝ‬‬

‫خالطخ اٌؾذ‪٠‬ش‬

‫ٌى‪ ٟ‬أل‪ َٛ‬ثئٔشبء ارظبي ِغ ؽبعت آخش ػٍ‪ ٝ‬اٌشجىخ ‪ ٚ‬رجبدي اٌج‪١‬بٔبد ِؼٗ ‪٠‬غت أْ‬ ‫أٍِه ِب ‪: ٍٟ٠‬‬ ‫‪ .1‬ػٕ‪ٛ‬اْ اٌؾبعت ‪ٌ IP Address‬الرظبي ثٗ‬ ‫‪ .2‬ػٕ‪ٛ‬اْ اٌزغج‪١‬ك اٌجشِغ‪ ٟ‬ػٍ‪ ٝ‬اٌؾبعت ‪Port‬‬ ‫‪ .3‬رؾذ‪٠‬ذ ٔ‪ٛ‬ع اٌجش‪ٚ‬ر‪ٛ‬و‪ٛ‬ي اٌّغزخذَ ٌٕمً اٌج‪١‬بٔبد‬


‫‪ | 6‬صفحة‬

‫فظً اٌششػ اٌؼٍّ‪ٟ‬‬

‫ف‪٘ ٟ‬زا اٌغضء األ‪ٚ‬ي ِٓ اٌذسط ع‪ٛ‬ف أل‪ َٛ‬ثششػ إسعبي ٔض فمظ ‪ٚ ،‬ف‪ ٟ‬اٌغضء اٌضبٔ‪ ٟ‬ع‪ٛ‬ف أل‪ َٛ‬ثزىٍّخ‬ ‫اٌذسط ِٓ خالي ششػ إسعبي اٌظ‪ٛ‬س‬ ‫‪ .1‬ع‪ٛ‬ف أل‪ َٛ‬ثجٕبء ٘زا اٌزغج‪١‬ك ِٓ خالي ‪ّ٠ ،Visual Studio C# 2008‬ىٕه إرجبع ٔفظ اٌخغ‪ٛ‬اد‬ ‫ثبٌضجظ إرا وٕذ رٍّه ‪Visual Studio C# 2005‬‬ ‫‪٘ .2‬زا اٌزغج‪١‬ك ِؤٌف ِٓ ثشٔبِغ‪: ٓ١‬‬ ‫‪ ‬األ‪ٚ‬ي ٘‪ ٛ‬ثشٔبِظ اٌّشعً ( ‪٠‬م‪ َٛ‬ثئسعبي ث‪١‬بٔبد ِٓ ٔ‪ٛ‬ع " ٔض " ‪ " ,‬ط‪ٛ‬س " )‬ ‫‪ ‬اٌضبٔ‪ ٛ٘ ٟ‬اٌجشٔبِظ اٌّغزمجً ‪ ٚ‬اٌز‪ ٞ‬ع‪ٛ‬ف ‪٠‬ى‪ ْٛ‬ػٍ‪ ٝ‬ؽبعت آخش ( ‪٠‬م‪ َٛ‬ثؼشع اٌج‪١‬بٔبد‬ ‫اٌّشعٍخ )‬

‫ثشٔبِظ اٌغ‪ٙ‬بص اٌّشعً‬

‫‪ٚ‬اع‪ٙ‬خ اٌجشٔبِظ اٌّشعً ) ‪ ، ( Sender‬وّب ٘‪ِ ٛ‬ج‪ ٓ١‬ثبٌشىً‬

‫‪2‬‬ ‫‪9‬‬

‫‪1‬‬

‫‪3‬‬ ‫‪4‬‬

‫‪5‬‬

‫‪8‬‬ ‫‪6‬‬

‫‪7‬‬

‫ع‪ٛ‬ف أروش ثبٌزفظ‪ ً١‬اٌؼٕبطش اٌّغزخذِخ ػٍ‪ ٝ‬اٌ‪ٛ‬اع‪ٙ‬خ‬


‫‪ | 7‬صفحة‬

‫لُ ثئٔشبء ِشش‪ٚ‬ع عذ‪٠‬ذ ِٓ ّٔظ ‪ٚ Windows Application‬عّٗ ‪ ( Sender‬اٌّشعً )‬ ‫‪٠‬غت ػٍ‪١‬ه أْ رم‪ َٛ‬ثزٕض‪ ً٠‬اٌؼٕبطش ػٍ‪ ٝ‬اٌ‪ٛ‬اع‪ٙ‬خ ‪ ،‬ثبٌزشر‪١‬ت اٌّزو‪ٛ‬س ثبٌشىً اٌغبثك‬ ‫لجً أْ ٔزىٍُ ػٓ اٌؼٕبطش اٌّ‪ٛ‬عذح ػٍ‪ ٝ‬اٌ‪ٛ‬اع‪ٙ‬خ ‪٠ ،‬غت رؾذ‪٠‬ذ خظبئض اٌ‪ٛ‬اع‪ٙ‬خ ( ‪ ٟ٘ٚ ، ) Form‬وّب ‪ٍٟ٠‬‬ ‫‪:‬‬ ‫اٌخبط‪١‬خ‬ ‫‪Text‬‬ ‫) ‪Size( width‬‬ ‫) ‪Size( height‬‬ ‫‪MaximaizeBox‬‬ ‫‪MinizeBox‬‬

‫اٌم‪ّ١‬خ‬ ‫انًزسم‬ ‫‪735‬‬ ‫‪463‬‬ ‫‪FALSE‬‬ ‫‪FALSE‬‬

‫ػٕبطش اٌ‪ٛ‬اع‪ٙ‬خ‬ ‫‪ .1‬شش‪٠‬ظ اٌم‪ٛ‬ائُ ( ‪ ، ) MinuStrip‬وّب ف‪ ٟ‬اٌشىً اٌزبٌ‪:ٟ‬‬

‫اٌخبط‪١‬خ‬ ‫‪Name‬‬ ‫‪RightToLeft‬‬

‫اٌم‪ّ١‬خ‬ ‫‪mSt‬‬ ‫‪yes‬‬

‫‪ .2‬طٕذ‪ٚ‬ق اٌّغّ‪ٛ‬ػخ ( ‪) GroupBox‬‬ ‫‪ِ .3‬شثغ ٔض ( ‪ٌ ، ) TextBox‬زؾذ‪٠‬ذ اٌؼٕ‪ٛ‬اْ ‪ٌٍ IP Address‬غ‪ٙ‬بص اٌز‪ٔ ٞ‬ش‪٠‬ذ االرظبي ثٗ ‪.‬‬ ‫اٌخبط‪١‬خ‬ ‫‪Name‬‬ ‫‪TextAlign‬‬

‫اٌم‪ّ١‬خ‬ ‫‪ipBox‬‬ ‫‪center‬‬

‫‪ِ .4‬شثغ ٔض ( ‪ٌ ، ) TextBox‬زؾذ‪٠‬ذ ِٕفز اٌجشٔبِظ اٌز‪ٔ ٞ‬ش‪ ٞ‬رجبدي اٌج‪١‬بٔبد ِؼٗ ‪.‬‬ ‫اٌخبط‪١‬خ‬ ‫‪Name‬‬ ‫‪TextAlign‬‬

‫اٌم‪ّ١‬خ‬ ‫‪portBox‬‬ ‫‪center‬‬

‫‪ِ .5‬شثغ ٔض ( ‪ ، ) TextBox‬وزبثخ إٌض اٌّشاد ٔمٍٗ ‪.‬‬ ‫اٌخبط‪١‬خ‬

‫اٌم‪ّ١‬خ‬


‫‪ | 8‬صفحة‬ ‫‪Name‬‬ ‫‪TextAlign‬‬

‫‪txtBox‬‬ ‫‪center‬‬

‫‪ .6‬صس ) ‪ ، ( Button‬إلسعبي إٌض إٌ‪ ٝ‬اٌغ‪ٙ‬بص ا‪٢‬خش ‪.‬‬ ‫اٌم‪ّ١‬خ‬ ‫‪txtButton‬‬

‫اٌخبط‪١‬خ‬ ‫‪Name‬‬

‫‪ .7‬صس ) ‪ ، ( Button‬إلسعبي ط‪ٛ‬سح إٌ‪ ٝ‬اٌغ‪ٙ‬بص ا‪٢‬خش ‪.‬‬ ‫اٌم‪ّ١‬خ‬ ‫‪imgButton‬‬

‫اٌخبط‪١‬خ‬ ‫‪Name‬‬

‫‪ٌٛ .8‬ؽخ ( ‪ ، ) Panel‬العزؼشاع اٌظ‪ٛ‬سح اٌّشاد ٔمٍ‪ٙ‬ب ‪.‬‬ ‫‪ .9‬ػٕب‪. ) Label ( ٓ٠ٚ‬‬

‫اٌى‪ٛ‬د اٌجشِغ‪ٟ‬‬

‫ع‪ٛ‬ف أل‪ ِٓ َٛ‬خالي ِب ‪ ٍٟ٠‬ثششػ و‪١‬ف‪١‬خ إٔشبء االرظبي ث‪ ٓ١‬اٌؾبعج‪ ٚ ٟ‬رٌه ِٓ خالي عش‪٠‬مز‪ِ ٓ١‬خزٍفز‪: ٓ١‬‬ ‫أ‪ٚ‬ال ‪ٌٕ -‬مً إٌض ( عش‪٠‬مخ ارظبي أ‪) ٌٝٚ‬‬ ‫صبٔ‪١‬ب ‪ٌٕ -‬مً اٌظ‪ٛ‬سح ( عش‪٠‬مخ ارظبي صبٔ‪١‬خ )‬ ‫ف‪ ٟ‬اٌجذا‪٠‬خ ‪٠‬غت رضّ‪ِ ٓ١‬غبالد اٌزغّ‪١‬خ اٌزبٌ‪١‬خ‬ ‫;‪Using System.Net‬‬ ‫;‪Using System.Net.Sockets‬‬

‫٘زاْ اٌّغبالْ ِٓ خالٌ‪ّٙ‬ب رمذَ ٌغخ ‪ C#‬اٌؼذ‪٠‬ذ ِٓ اٌظف‪ٛ‬ف اٌغب٘ضح ‪ ٚ‬اٌز‪ ٟ‬رّ​ّىٓ اٌّغ‪ٛ‬س ِٓ رغ‪٠ٛ‬ش ثشاِظ‬ ‫شجىبد ‪،‬‬ ‫ف‪ ٟ‬اٌظفؾخ اٌزبٌ‪١‬خ ‪:‬‬ ‫أ‪ٚ‬ال ‪ -‬الؽظ ِغبالد اٌزغّ‪١‬خ اٌّ‪ٛ‬ع‪ٛ‬دح ‪ ٚ‬لُ ثئضبفز‪ٙ‬ب عّ‪١‬ؼ‪ٙ‬ب‬ ‫صبٔ‪١‬ب ‪ -‬الؽظ اٌّزؾ‪ٛ‬الد اٌؼبِخ اٌز‪ ٟ‬لّذ ثزؼش‪٠‬ف‪ٙ‬ب‬ ‫( ع‪ٛ‬ف ٔأر‪ ٟ‬ػٍ‪ ٝ‬ششػ وً ِزؾ‪ٛ‬ي ػشفٕبٖ ف‪ٚ ٟ‬لزٗ ‪ٌّٚ ،‬برا ٔؾزبعٗ)‬


‫ | صفحة‬9 using using using using using using using using

System; System.IO; System.Net; System.Data; System.Text; System.Drawing; System.Net.Sockets; System.Windows.Forms;

namespace Sender { public partial class Form1 : Form { //‫املتحوالت العامة‬ Bitmap bitmap; BinaryWriter bw; NetworkStream ns; TcpClient peer; MemoryStream stream; byte[] imgBuf; byte[] txtBuf = new byte[1024]; public Form1() { InitializeComponent(); } } }

: ٟ‫ر‬٢‫د ا‬ٛ‫ أوزت اٌى‬، txtButton ‫ اٌخبص ثبٌضس‬Click ‫ْ ِٓ خالي ؽذس‬٢‫ ا‬ٚ private void txtButton_Click(object sender, EventArgs e) { try { UnicodeEncoding coding = new UnicodeEncoding(); Socket peer1 = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); IPEndPoint receiverIp = new IPEndPoint(IPAddress.Parse(ipBox.Text), int.Parse(portBox.Text)); string sr = txtBox.Text; txtBuf = coding.GetBytes(sr); peer1.SendTo(txtBuf, receiverIp); peer1.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }

‫ك‬١‫ اٌزغج‬ٌٝ‫ ِشثغ إٌض إ‬ٟ‫ة ف‬ٛ‫ إسعبي إٌض اٌّىز‬ٚ ‫خش‬٢‫زُ إٔشبء ارظبي ِغ اٌؾبعت ا‬٠ ‫د‬ٛ‫ِٓ خالي ٘زا اٌى‬ ٟ‫خ ف‬١‫ض اٌٍغخ اٌؼشث‬١ِ‫ ٔزّىٓ ِٓ دػُ رش‬ٟ‫ رٌه ٌى‬ٚ UnicodeEncoding ‫ف وبئٓ ِٓ اٌظف‬٠‫ال لّٕب ثزؼش‬ٚ‫أ‬ ‫ذ‬٠‫ ثً اٌؼذ‬ASCII ‫ض‬١ِ‫ذػُ فمظ رش‬٠ ‫زا اٌظف ال‬ٙ‫ ف‬، ‫ؼ‬١‫زُ ػشضٗ ثشىً طؾ‬٠ ‫ش‬١‫ اٌّغزمجٍخ ؽ‬ٚ ‫خ اٌّشعٍخ‬ٙ‫اٌغ‬ . ‫ض اٌٍغبد‬١ِ‫ذ ِٓ رشا‬٠‫ اٌؼذ‬ٚ


‫‪ | 10‬صفحة‬

‫صبٔ‪١‬ب رؼش‪٠‬ف وبئٓ ِٓ ّٔظ ‪ِ ٚ Socket‬ب أدسان ِب ٘‪ ٟ‬اي ‪: Socket‬‬

‫إٔ‪ٙ‬ب اٌ‪ٛ‬اع‪ٙ‬خ اٌجشِغ‪١‬خ اٌز‪ٔ ٟ‬زّىٓ ِٓ خالٌ‪ٙ‬ب ِٓ رؾم‪١‬ك االرظبي ث‪ ٓ١‬األع‪ٙ‬ضح‬ ‫اٌّشث‪ٛ‬عخ ػٍ‪ ٝ‬اٌشجىخ ‪ ِٓ ٟ٘ ٚ ،‬أُ٘ أعبع‪١‬بد ثشِغخ اٌشجىبد ‪.‬‬

‫الؽظ اٌ‪ٛ‬عغبء اٌز‪ِّ ٟ‬شر‪ٙ‬ب إٌ‪ ٝ‬اٌزبثغ اٌجٕبء ٌٍظف ‪Socket‬‬ ‫‪ .1‬اٌ‪ٛ‬ع‪١‬ظ األ‪ٚ‬ي ‪ّ٠ :‬ضً ػبئٍخ ‪ IP Address‬اٌز‪ٔ ٟ‬غزخذِ‪ٙ‬ب ‪ٕ٘ ٟ٘ٚ‬ب ‪IP Version4‬‬ ‫(‪) AddressFamily.InterNetwork‬‬ ‫‪ٚ، ) Data Gram‬رٌه ألٕٔ‪ ٟ‬اخزشد‬ ‫‪ .2‬اٌ‪ٛ‬ع‪١‬ظ اٌضبٔ‪٠ : ٟ‬ؾذد أعٍ‪ٛ‬ة ٔمً اٌج‪١‬بٔبد ( ؽذدٔبٖ ٕ٘ب‬ ‫اٌجش‪ٚ‬ر‪ٛ‬و‪ٛ‬ي ‪ٌٍٕ Udp‬مً ‪٠ ٛ٘ ٚ‬ذػُ األعٍ‪ٛ‬ة ‪ ( Dgram‬أعٍ‪ٛ‬ة اٌشصَ )‬ ‫‪ .3‬اٌ‪ٛ‬ع‪١‬ظ اٌضبٌش ‪ :‬رؾذ‪٠‬ذ ٔ‪ٛ‬ع اٌجش‪ٚ‬ر‪ٛ‬و‪ٛ‬ي اٌّغزخذَ ‪ ٛ٘ٚ‬وّب روشد ‪.UDP‬‬

‫صبٌضب اٌظف ‪ ٚ IPEndPoint‬اٌز‪٠ ٞ‬ؾذد اٌؼٕ‪ٛ‬اْ اٌز‪ٔ ٞ‬ش‪٠‬ذ االرظبي ثٗ ‪ ٚ‬رجبدي اٌج‪١‬بٔبد ِؼٗ ‪٠ٚ،‬أخز ربثغ‬ ‫اٌجٕبء ٌ‪ٙ‬زا اٌظف ‪ٚ‬ع‪١‬غ‪: ٓ١‬‬ ‫األ‪ٚ‬ي ‪ ٛ٘ -‬ػٕ‪ٛ‬اْ ‪IP Address‬‬

‫‪-‬‬

‫اٌضبٔ‪ِٕ ٛ٘ - ٟ‬فز اٌزغج‪١‬ك ‪Port‬‬

‫إْ ػٍّ‪١‬خ االرظبي ‪ٔٚ‬مً اٌج‪١‬بٔبد رجذأ ػٕذ اٌغغش‬ ‫;)‪peer1.SendTo(txtBuf, receiverIp‬‬ ‫الؽظ اعزخذاَ إٌّ‪ٙ‬ظ ‪ ِٓ SendTo‬خالي اٌىبئٓ اٌزبثغ ٌٍظف ‪٠ ، Socket‬غزخذَ ٌالرظبي ‪ٔٚ‬مً اٌج‪١‬بٔبد ‪ٚ ،‬‬ ‫‪٠‬أخز ‪ٚ‬ع‪١‬غ‪: ٓ١‬‬ ‫األ‪ٚ‬ي ‪ -‬اٌ‪ٛ‬ع‪١‬ظ األ‪ٚ‬ي ( ِٓ ّٔظ ‪ّ٠ ٛ٘ ٚ ، ) Buffer‬ضً اٌجفش اٌّغزخذَ ٌزخض‪ ٓ٠‬اٌج‪١‬بٔبد اٌز‪ٔ ٟ‬ش‪٠‬ذ ٔمٍ‪ٙ‬ب ‪ٚ‬‬ ‫لذ ِشسد إٌ‪ِ ٗ١‬ظف‪ٛ‬فخ ِٓ ّٔظ ‪ Byte‬اٌز‪ ٟ‬لّذ ثزخض‪ ٓ٠‬إٌض ف‪ٙ١‬ب ػٍ‪ ٝ‬شىً ‪Binary‬‬ ‫صبٔ‪١‬ب ‪ -‬اٌ‪ٛ‬ع‪١‬ظ اٌضبٔ‪ّٔ ِٓ ٟ‬ظ ( ‪ ٚ ) IPEndPoint‬اٌز‪ّ٠ ٞ‬ضً اٌؼٕ‪ٛ‬اْ اٌز‪ٔ ٞ‬ش‪٠‬ذ االرظبي ثٗ‬


‫ | صفحة‬11

‫بزَايج انجهاس انًستقبم‬

: ٌٟ‫ضؼ اٌشىً اٌزب‬ٛ٠ ‫ظ وّب‬١‫ ثشٔبِظ ثغ‬ٛ٘ٚ

‫ العزمجبي إٌض‬TextBox ٓ٠‫ ػجبسح ػٓ ػٕظش‬ٛ٘ٚ ‫س اٌّشعٍخ‬ٛ‫ العزمجبي اٌظ‬Panel ٚ

ٟ‫د اٌجشِغ‬ٛ‫أِب اٌى‬ using using using using using using using using

System; System.Net; System.Data; System.Text; System.Drawing; System.Threading; System.Net.Sockets; System.Windows.Forms;

namespace Receiver { public partial class Form1 : Form { UnicodeEncoding o = new UnicodeEncoding(); Socket RecPeer; Thread thread;


‫ | صفحة‬12

byte[] txtBuf = new byte[1024]; ‫التابع البناء للنمىذج‬ public Form1() { InitializeComponent(); thread = new Thread(new ThreadStart(TxtReceive)); thread.Start(); } ‫منهج استقبال االتصال و النص املرسل‬ void TxtReceive() { try { IPEndPoint localIp = new IPEndPoint(IPAddress.Any, 5000); while (true) { RecPeer = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); RecPeer.Bind(localIp); RecPeer.Receive(txtBuf); RecPeer.Close(); textBox1.Text = Convert.ToString(o.GetString(txtBuf)); Array.Clear(txtBuf, 0, txtBuf.Length); } } catch { } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { thread.Abort(); } } }

‫ ٘زا‬ٟ‫ ألٕٔب ف‬ٞ‫س‬ٚ‫ أِش ضش‬ٛ٘ٚ، System.Thread ‫د رالؽظ اعزخذاَ اٌّغبي‬ٛ‫ اٌى‬ٟ‫خ ف‬١ّ‫الؽظ ِغبالد اٌزغ‬ . ‫رط‬ٌٍّٕٛ ‫ ربثغ اٌجٕبء‬ٟ‫ ِغ اٌجشٔبِظ ف‬ٞ‫اص‬ٛ‫ اٌز‬ٍٝ‫ز ػ‬١‫ اعزخذاَ ِغبٌه رٕف‬ٌٝ‫اٌجشٔبِظ ٔؾزبط إ‬ . ‫خ‬١‫ ٌذػُ اٌٍغخ اٌؼشث‬UnicodeEncoding ٓ‫ ػشفذ وبئ‬ٟٕٔ‫الد اٌؼبِخ رالؽظ ثأ‬ٛ‫ ِٕغمخ اٌّزؾ‬ٟ‫ف‬ . Thread ‫ رؼشف وبئٓ ِٓ ّٔظ‬ٌٝ‫ ثبإلضبفخ إ‬، Socket ‫ضب وبئٓ ِٓ ّٔظ‬٠‫وّب ػشفٕب أ‬ . ‫ ( ثبالعزمجبي‬Buffer )‫ً اٌجفش‬١‫ ٌزّض‬Bytes ‫فخ‬ٛ‫ضب ِظف‬٠‫ ػشفذ أ‬ٚ . ‫بٔبد اٌّشعٍخ‬١‫ اٌج‬ٚ ‫خ اعزمجبي االرظبي‬١ٍّ‫بَ ثؼ‬١‫ أٔشأرٗ ٌٍم‬ٞ‫ اٌز‬ٚ ، TxtReceive ‫ظ‬ٌّٕٙ‫ضب ا‬٠‫ٔالؽظ أ‬


‫‪ | 13‬صفحة‬

‫الؽظ إٔٔ‪ ٟ‬ػشفذ وبئٓ ‪ٚ IPEndPoint‬اٌز‪ّ٠ ٞ‬ضً ٕ٘ب اٌؼٕ‪ٛ‬اْ اٌّؾٍ‪ٌٍ ٟ‬غ‪ٙ‬بص اٌّغزمجً ‪ ،‬رززوش ثإٔٔب لّٕب‬ ‫ثٕفظ اٌؼٍّ‪١‬خ ف‪ ٟ‬ثشٔبِظ اٌّشعً ؟‬

‫الؽظ اٌؾٍمخ اٌالٔ‪ٙ‬بئ‪١‬خ اٌز‪ٚ ٟ‬ضؼز‪ٙ‬ب !!!!!!!!‬ ‫ا‪ ْ٢‬رف‪ٌّ ُٙ‬برا أؽزبط إٌ‪ِ ( thread ) ٝ‬غٍه ِٕفظً ػٓ ِغٍه اٌجشٔبِظ اٌشئ‪١‬غ‪. ٟ‬‬ ‫رززوش ف‪ ٟ‬و‪ٛ‬د ثشٔبِظ اإلسعبي ثإٔٔ‪ ٟ‬لّذ ثئغالق االرظبي ;)(‪peer1.close‬‬ ‫ؽ‪١‬ش إٔٔ‪ ٟ‬ف‪ ٟ‬ثشٔبِظ اإلسعبي أل‪ َٛ‬ثؼٍّ‪١‬خ االرظبي ‪ ٚ‬اإلسعبي ‪ ٚ‬إغالق االرظبي وً ػٍّ‪١‬خ ‪ Click‬ػٍ‪ ٝ‬صس‬ ‫اإلسعبي ‪ ِٓ ( ،‬د‪ ْٚ‬إغالق االرظبي ٌٓ أػ‪ٛ‬د لبدسا ػٍ‪ ٝ‬إسعبي ث‪١‬بٔبد ِشح أخش‪ ٜ‬ف‪٘ ٟ‬زٖ اٌغش‪٠‬مخ ) ‪.‬‬ ‫ٌزٌه ف‪ ٟ‬ثشٔبِظ االعزمجبي أؽزبط د‪ِٚ‬ب إٌ‪ ٝ‬اعزمجبي االرظبي ‪ ِٓٚ‬صُ اعزمجبي اٌج‪١‬بٔبد ‪ ِٓٚ‬صُ إغالق االرظبي‬ ‫‪ٚ‬ثؼذ رٌه أػ‪ٛ‬د ٌفؾض ػٍّ‪١‬خ ارظبي عذ‪٠‬ذح ‪٘ ،‬زا اٌزشر‪١‬ت ‪ٚ‬اضؼ ِٓ خالي اعزذػبء إٌّب٘ظ اٌزبثؼخ ٌٍظف‬ ‫‪.Socket‬‬

‫إٌّ‪ٙ‬ظ ‪ ِٓ Bind‬اٌظف ‪ Socket‬أل‪ ِٓ َٛ‬خالٌٗ ثبعزمجبي االرظبي ػٍ‪ ٝ‬اٌؼٕ‪ٛ‬اْ اٌّؾٍ‪. ٟ‬‬ ‫إٌّ‪ٙ‬ظ ‪ ِٓ Receive‬اٌظف ‪ Socket‬أل‪ ِٓ َٛ‬خالٌٗ ثبعزمجبي اٌج‪١‬بٔبد اٌّشعٍخ ‪.‬‬ ‫الؽظ اٌغغش اٌزبٌ‪ٟ‬‬ ‫;)‪Array.Clear(txtBuf, 0, txtBuf.Length‬‬

‫ِٓ خالي ٘زٖ اٌغغش أل‪ َٛ‬ثبعزخذاَ طف عب٘ض ر‪ٛ‬فشٖ ٌ‪ ِٓ C# ٟ‬خالي ‪ٚ System‬اعزف‪١‬ذ ِٓ إٌّ‪ٙ‬ظ ‪Clear‬‬ ‫ٌى‪ ٟ‬أل‪ َٛ‬ثزٕظ‪١‬ف اٌجفش ) ‪ ، ( Buffer‬العزمجبي ث‪١‬بٔبد ِٓ عذ‪٠‬ذ ‪.‬‬ ‫الؽظ أ‪٠‬ضب ؽذس ‪ ٚ closing_Form‬اٌز‪ ِٓ ٞ‬خالٌٗ أل‪ َٛ‬ثؼٍّ‪١‬خ إع‪ٙ‬بع ًٌ ‪. thread‬‬ ‫الؽظ أٔٗ اعزذػبء إٌّ‪ٙ‬ظ ‪٠ TxtRceeive‬زُ ِٓ خالي ‪ِٕ thread‬فشد ف‪ ٟ‬ربثغ اٌجٕبء ‪.‬‬

‫ف‪ ٟ‬اٌفظً اٌمبدَ إْ اعزغؼذ ‪٠ ٚ‬غش اهلل ٌ‪ ٟ‬ع‪ٛ‬ف أل‪ َٛ‬ثزىٍّخ اٌجشٔبِظ ‪ٚ‬اٌز‪ ٞ‬ع‪ٛ‬ف أل‪ َٛ‬ف‪ ٗ١‬ثششػ ػٍّ‪١‬خ‬ ‫ارظبي ِخزٍفخ ‪ ٚ‬و‪١‬ف‪١‬خ إسعبي ث‪١‬بٔبد ِضً ط‪ٛ‬س ػجش اٌشجىخ ‪.‬‬


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.