| 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فشد ف ٟربثغ اٌجٕبء .
ف ٟاٌفظً اٌمبدَ إْ اعزغؼذ ٠ ٚغش اهلل ٌ ٟعٛف أل َٛثزىٍّخ اٌجشٔبِظ ٚاٌز ٞعٛف أل َٛف ٗ١ثششػ ػٍّ١خ ارظبي ِخزٍفخ ٚو١ف١خ إسعبي ث١بٔبد ِضً طٛس ػجش اٌشجىخ .