قواعد المشاركة في المنتدى

(قسم الاعلانات) الموضوع:اكواب ورقيه بواسطة: (رنا احمد) :: (قسم الاعلانات) الموضوع:دواليب خشب ، متر دريسنج ميدلام 1400جنيه ، متر دريسنج كونتر اتش بى ال 1750جنيه 01013843894 بواسطة: (مليكة سمير) :: (قسم الاعلانات) الموضوع:الثريا هوم توفر افضل الأسعار لخدمات التنظيف والعزل بواسطة: (عروض الماسية) :: (قسم الاعلانات) الموضوع:دواليب ملابس ، متر دريسنج ميدلام 1400جنيه ، متر دريسنج كونتر اتش بى ال 1750جنيه 01207565655 بواسطة: (مليكة سمير) :: (قسم الاعلانات) الموضوع:معلمة مدرسة تدريس خصوصي للغة الانجليزية والانترناشونال 0537655501 بالرياض بواسطة: (نا ريمان 12) :: (قسم الاعلانات) الموضوع:دولاب ملابس ، متر دريسنج ميدلام 1400جنيه ، متر دريسنج كونتر اتش بى ال 1750جنيه 01013843894 بواسطة: (مليكة سمير) :: (قسم الدعم الفني) الموضوع:نصائح لصيانة وترميم المنازل مع اللمسة الذهبية 0555230860 بواسطة: (امل بكير) :: (قسم الدعم الفني) الموضوع:كيفية تصنيع ابواب خشبية بعجمان 0528250807 النبلاء بواسطة: (امل بكير) :: (قسم الاعلانات) الموضوع:ماهى افضل شركات التنظيف بالشارقة 0505037824 قمر الامارات بواسطة: (magda manfy) :: (قسم الاعلانات) الموضوع:كيفية تعقيم المنازل للوقاية من الكورونا 0560387770 فرسان العرب بواسطة: (magda manfy) :: (قسم الاعلانات) الموضوع:افضل نظام نقاط البيع في الكويت Matix pos بواسطة: (هند رضواني) :: (قسم الاعلانات) الموضوع:دواليب ملابس خشب ، متر دريسنج ميدلام 1400جنيه ، متر دريسنج كونتر اتش بى ال 1750جنيه 01013843894 بواسطة: (مليكة سمير) :: (قسم الاعلانات) الموضوع:جليسة أطفال بواسطة: (هند رضواني) :: (قسم الاعلانات) الموضوع:دولاب ملابس خشب ، متر دريسنج ميدلام 1400جنيه ، متر دريسنج كونتر اتش بى ال 1750جنيه 01207565655 بواسطة: (مليكة سمير) :: (قسم الاعلانات) الموضوع:شركة ركن الجنوب لتنظيف الخزانات بخيبر الجنوب بواسطة: (غعا) :: (قسم الاعلانات) الموضوع:دواليب ملابس 2023 ، متر دريسنج ميدلام 1400جنيه ، متر دريسنج كونتر اتش بى ال 1750جنيه 01013843894 بواسطة: (مليكة سمير) :: (قسم الاعلانات) الموضوع:دولاب ملابس 2023 ، متر دريسنج ميدلام 1400جنيه ، متر دريسنج كونتر اتش بى ال 1750جنيه 01207565655 بواسطة: (مليكة سمير) :: (أخبار التكنولوجيا) الموضوع:مؤسسة عبقرة التقنية بواسطة: (رفيف الحياه) :: (قسم الاعلانات) الموضوع:اسعار دولاب ملابس ، متر دريسنج ميدلام 1400جنيه ، متر دريسنج كونتر اتش بى ال 1750جنيه 01013843894 بواسطة: (مليكة سمير) :: (قسم الاعلانات) الموضوع:متجر نقتدي من المدينة المنورة بواسطة: (اسماء عومر)

المواضيع المثبته: (منتدى الكتب و المقالات) الموضوع:كتب في الاكسس باللغة العربية بواسطة: (ابو حسام) :: (منتدى برمجة الألعاب) الموضوع:برنامج رائع لتصميم الألعاب بواسطة: (mjxp) :: (منتدى مبرمجي ASP) الموضوع:مشروع تخرج القرية الذكية المصرية بواسطة: (caco) :: (منتدى Microsoft SQL Server) الموضوع:تابعوا دروس sql2000 بواسطة: (dody) :: (منتدى مبرمجي ASP) الموضوع:شرح كود موقع شؤون الموظفين النسخة الأولى بواسطة: (alanees) :: (منتدى برمجة التقارير) الموضوع:شرح طريقة اضافة تقرير Crystal Reports في الـ ASP.NET بواسطة: (FunctionSys) :: (منتدى أنظمة الشبكات وأمنها) الموضوع:الشبكات الحاسوبية ..Computer Network.. بواسطة: (مرحبا الساع) :: (منتدى ADO.NET العام) الموضوع:الكامل في قواعد البيانات مع VB.net بواسطة: (المهندس عدي) :: (منتدى أجاكس(Asynchronous JavaScript and XML)) الموضوع:إستخدام Web Services مع ASP.NET AJAX بواسطة: (يوسف جميل جادالله) :: (منتدى برمجة التقارير) الموضوع:اصنع تقريرك في اقل من دقيقه واستغني عن الكريستال ريبورت بواسطة: (mero_make) :: (منتدى Microsoft Excel) الموضوع:شرح دوال الاكسيل كلِ على حده بواسطة: (ramies) :: (منتدى برمجة الجرافكس) الموضوع:الجزء الاول من دروس تعلم GDI بواسطة: (alaa gomaa) :: (منتدى برمجة الشبكات في بيئة الدوت نت) الموضوع:عمل برنامج بسيط مع قاعدة بيانات اكسس على شبكة محلية بواسطة: (allnsh 3) :: (منتدى Microsoft Excel) الموضوع:open office بواسطة: (ramies) :: (منتدى مبرمجي Microsoft Visual C#.NET) الموضوع:موسوعة الأكواد بواسطة: (fmo_82) :: (منتدى التصميم والجرافيكس) الموضوع:سلسلة دروس الفلاش بواسطة: (مبرمجة فلسطينية) :: (منتدى Borland Delphi) الموضوع:أحفظ برامجك الديلفاوية من أذي العابثين باستخدام رقم الهارد (محترفين) بواسطة: (Hadyabady) :: (قسم المواضيع المميزة) الموضوع:أرشيف للمشاركات المتميزة بواسطة: (أبو أفنان) :: (منتدى برمجة التقارير) الموضوع:مثال Crystal Report بواسطة: (شهرزاد) :: (منتدى Microsoft Visual Basic) الموضوع:شرح ODBC بواسطة: (VB_Manager)

عدد الصفحات : 9  « < 1  2  3  4  5  6  7  8   > » إضافة رد إضافة موضوع جديد

> Dot Net Networks & TCP/IP Programming,تعلم برمجة الشبكات والنظم الموزعة وبرتوكول ال TCP\IP
Bookmark and Share
تقييم الموضوع Label معدل التقيم:4
مشاركةالجمعة,16/ذو القعدة/1426 هـ,11:08 مساءً
المشاركة #31

خبير برمجة شبكات ونظم موزعة
الرتبة في المنتدى:رائد

أيقونة المجموعة

المجموعة: مجموعة الخبراء المعتمدين
المشاركات: 506
سجل في:الأحد,28/رمضان/1426 هـ,04:59 صباحاً
الدولة:الأردن
رقم العضوية: 6228



امثلة الدرس العاشر ,



الملفات المرفقة
 Simple Remote Control.zip ( 53.45ك ) عدد مرات التنزيل: 53612
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالأربعاء,21/ذو القعدة/1426 هـ,06:42 صباحاً
المشاركة #32

الرتبة في المنتدى:ملازم

أيقونة المجموعة

المجموعة: أعضاء فعالين
المشاركات: 198
سجل في:الثلاثاء,15/ذو الحجة/1425 هـ,02:35 مساءً
الدولة:اليمن
رقم العضوية: 1329



مشرفنا الغالي أنا تابعت الدروس مؤخرا ولدي أسئلة ولكن على الدروس الأولى حيث راجعت الـدرس الخاص بالـ pop3 وقمت بتنفيذ الـ code ومشي معي بشكل صحيح.

ولكن إذا أردت إنزال جميع الرسائل الخاصة بمستخدم معين المفروض أني سوف أجلب عدد الرسائل أولا بالستخدام الـ STAT command ثم أعمل loop بعدد الرسائل وأستخدم داخل الـ loop الأمر RETR وبهذا أكون أنزلت جميع الرسائل .
وبناء على الكلام السابق لدي التساؤلات التالية :
أولا : هل الكلام الذي ذكرتة صحيح أم أن هناك طريقة أخرى أجلب بها جميع الرسائل .
ثانيا : المتغير المؤقت الذي سوف أحفظ فية جميع الرسائل هل يكون من نوع Arraylist .
ثالثا : إذا كان هناك بعض الرسائل تحتوي على مرفق أو أكثر (attachment) هل سوف ينطبق علية الكلام السابق أم أنة سوف يكون هناك استثناءات.
أتمنى أن لا أكون قد أطلت وأن تجيبني على جميع التساؤلات.
وشكرا


--------------------

الحماس خطوة هامة على الطريق، ولكن التقدم الحقيقي هو نتيجه لتصرف صحيح وبشكل ثابت
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالأربعاء,21/ذو القعدة/1426 هـ,09:23 صباحاً
المشاركة #33

خبير برمجة شبكات ونظم موزعة
الرتبة في المنتدى:رائد

أيقونة المجموعة

المجموعة: مجموعة الخبراء المعتمدين
المشاركات: 506
سجل في:الأحد,28/رمضان/1426 هـ,04:59 صباحاً
الدولة:الأردن
رقم العضوية: 6228



اشكرك اخي students على ملاحظاتك , في المثال السابق استثنيت جلب جميع الرسائل وكتفيت بجلب الرسالة الأخيرة وحتى لا نعقد الكود بشكل اكبر , الطريقة التي ذكرتها باستخدام امر جلب عدد الرسائل ووضعه في Loop ثم تمريره على RETR هي طريقة جيدة ويمكنك استخدامها بدون اي مشاكل , بنسبة للمتغير الذي سوف يتم حفظ الرسائل به فيمكنك استخدام Array من نوع String وسوف يكون لكل رسالة Index خاص تستطيع استدعائها لاحقا أو يمكنك عمل قاعدة بيانات يتم فيها حفظ الرسائل الواردة من ال POP3 وهو في اعتقادي افضل من استخدام Array String فقط , بنسبة لموضوع المرفقات فيتم معالجته باستخدام ال HTTP Request ارجع إلى درس ال HTTP Programming إذ تكون المرفقات في لعادة من النوع Binary ولإنزالها لابد من معرفة ال Link الخاص بها على ال POP3 Server وباستخدام ال HTTP Request تستطيع تحميلها مع كل رسالة على الجهاز ..

وبتوفيق
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالخميس,22/ذو القعدة/1426 هـ,06:42 صباحاً
المشاركة #34

الرتبة في المنتدى:ملازم

أيقونة المجموعة

المجموعة: أعضاء فعالين
المشاركات: 198
سجل في:الثلاثاء,15/ذو الحجة/1425 هـ,02:35 مساءً
الدولة:اليمن
رقم العضوية: 1329



السلام عليكم ورحمة الله وبركاته
أشكرك أخي فادي على الرد
وإن شاء الله سوف أقوم بتجريب ومراجعة ما ذكرتة (و سأزعجك مرة أخرى بالأسئلة )





--------------------

الحماس خطوة هامة على الطريق، ولكن التقدم الحقيقي هو نتيجه لتصرف صحيح وبشكل ثابت
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالخميس,22/ذو القعدة/1426 هـ,09:40 صباحاً
المشاركة #35

خبير برمجة شبكات ونظم موزعة
الرتبة في المنتدى:رائد

أيقونة المجموعة

المجموعة: مجموعة الخبراء المعتمدين
المشاركات: 506
سجل في:الأحد,28/رمضان/1426 هـ,04:59 صباحاً
الدولة:الأردن
رقم العضوية: 6228



شكرا يا اخي على تفاعلك واهلا وسهلا بك
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالخميس,22/ذو القعدة/1426 هـ,11:53 مساءً
المشاركة #36

خبير برمجة شبكات ونظم موزعة
الرتبة في المنتدى:رائد

أيقونة المجموعة

المجموعة: مجموعة الخبراء المعتمدين
المشاركات: 506
سجل في:الأحد,28/رمضان/1426 هـ,04:59 صباحاً
الدولة:الأردن
رقم العضوية: 6228



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

الدرس الحادي عشر: Socket & Network Layer Programming :

في هذا الجزء سوف نبين بشكل أكثر تفصيلا عن برمجة طبقة ال Network Layer وهي التي يتم التعامل معها لإرسال واستقبال البيانات بعد تحويلها من و إلى Stream عبر الشبكة, قمنا سابقا باستخدام ال TCP و UDP للإرسال وللاستقبال وبينا الفرق بينهما وفي هذا الجزء سوف نتحدث عن ال Socket Programming وال TCP & UDP Classes وفي النهاية سوف نتحدث عن Asynchronous Socket .

أولا: Socket Programming

من المعروف أن السوكت هي الأداة التي يتم نقل البيانات من خلالها من جهاز إلى أخر ولاستخدامها يلزم في البداية تعريف النيم سبيس System.Net.Sockets حيث يحتوي هذا النيم سبيس على عدد ضخم من ال Classes والتي يتم استخدامها في برمجيات الشبكة وسوف نتحدث عن أهما وهو Socket Class إذ يمكننا بمن التعامل مع ال TCP أو ال UDP أو مع أي نوع أخر من البرتوكولات بشكل مباشر ويتكون ال Socket Object Method من ثلاثة باروميترات كما يلي:

 كود
Socket MySocket = new Socket(AddressFamily. , SocketType., ProtocolType.);


حيث يتم في الباروميتر الأول تحديد نوعية ال IP Address والذي سوف تتعامل معه ويعطيك عدد كبير من الخيارات ومنها IPX والمستخدم في شبكات ال Novel أو ATM والمستخدم في شبكات ال ATM Networks أو NetBIOS Address وغيرها ... ومن أهم هذه الخيارات الInterNetwork وهو ما نستخدمه بشكل دائم مع البرمجيات الخاصة بالشبكات ويعرف على أن نوع IP هو من النوع IPv4 وهو المعتاد مع نظام مايكروسوفت وأغلب أنظمة التشغيل المعروفة حاليا وفي المستقبل القريب جدا سيتم الإستغناء عنه وليحل محله ال IPv6, في الباروميتر الثاني يتم تحديد نوع ال Socket أي هل سوف نستخدم Stream لإرسال البيانات أو شيء اخر وعادة ما يتم استخدام ال Stream لهذه المهمة حيث اننا سنعتمد نمطية التراسل من النوع Stream , وأخيرا نحدد نوع البروتوكول المستخدم للإتصال فهل هو من النوع UDP أو TCP أو بروتوكولات أخرى مثل ICMP Internet Control Message Protocol أو IGMP Internet Group Management Protocol أو اننا نريد مثلا إنشاء ال Socket لتعريف IP Security Header بإختيار IPSecAuthenticationHeader وغيرها وسوف نأتي على شرح مثل هذه الأمور لاحقا إنشاء الله, وهنا سوف نختار ال TCP أو UDP ومن المعروف أن برتوكول ال TCP هو برتوكول موجه وهذا يعني إجراء عملية التحقق من الوصول والتوصيل إلى شخص ما محدد أما برتوكول ال UDP فهو برتوكول سريع نسبيا و لاكنه لا يدعم عملية التحقق من الوصول السليم للبيانات المرسلة وهو مفيد جدا لإجراء عملية البث الإذاعي Broadcast وإنشاء مجموعات البث Multicast Group وهو ما شرحناه في الدرس الأول والثاني أنظر إلى الشكل التالي ويبين فيه ال Header الخاص بال TCP وال Header الخاص بال UDP ولاحظ الفرق بينهما:

أولا ال TCP Header ويتكون من 32 Bits للبكت الواحد حيث يتم فيه تخزين عنوان المرسل في 16 Bits والمستقبل في 16 Bits والرقم التسلسلي للبكت في 32 Bits ورقم التحقق بالإضافة إلى ال Checksum وفي النهاية يتم وضع الجزء الخاص بالبيانات :


 كود
Data Offset: 4 bits the number of 32 bit words in the TCP Header. This indicates where the data begins. The TCP header (even one including options) is an integral number of 32 bits long.
Window: The number of data octets beginning with the one indicated in the acknowledgment field which the sender of this segment is willing to accept.


ثانيا ال UDP Header ويتكون من 32 Bits من البيانات للبكت الواحد ويحتوي على عنوان المرسل 16 Bits أما المستلم و ال Checksum فهما اختياريان وبشكل افتراضي لا يتم استخدامهم في عملية الإرسال:



 كود
The Checksum in UDP Header. 16 bits.
Computed as the 16-bit one's complement of the one's complement sum of a pseudo header of information from the IP header, the UDP header, and the data, padded as needed with zero bytes at the end to make a multiple of two bytes. If the checksum is cleared to zero, then checksuming is disabled. If the computed checksum is zero, then this field must be set to 0xFFFF.


استخدام ال Socket Programming لإنشاء TCP Connection :
تمر عملية الاتصال باستخدام ال TCP Socket Connection بمجموعة من المراحل وهي كما في الشكل التالي :


إذ تبدأ العملية في ال Client و ال server بإنشاء ال Socket كما يلي :

 كود
Socket MySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);


ثم ربط ال Socket مع الكمبيوتر الحالي باستخدام الميثود Bind وتستخدم فقط عند الاستقبال وكما يلي :

 كود
IPEndPoint ip = new IPEndPoint(IPAddress.Any, 5020);
MySocket.Bind(ip);


ثم القيام بعملية التصنت على البورت المحدد باستخدام الميثود listen ويمكنك تحدد عدد الأجهزة التي سيتم قبولها ولوضع عدد غير محدد نمرر له الرقم -1 ثم نقوم بالموافقة على الاتصال باستخدام الميثود accept وكما يلي :

 كود
MySocket.Listen(-1);
MySocket.Accept();


ويتم استقبال البيانات من خلال الميثود Receive حيث تعبئ البيانات في مصفوفة من النوع Byte وكما يلي :
 كود
byte[]Received=new byte[1024];
MySocket.Receive(Received);


وهنا قمنا بإنشاء Connection من النوع TCP وبتعريفها على البورت(5020 كمثال) حيث يتم ربطها بال Socket باستخدام الميثود Bind وقمنا بتعريف Listen لا نهائي العدد -1 ..

ولتعريف برنامج الإرسال TCP Client باستخدام ال Socket لابد من تعريف السوكت مرة أخرى وإسناد عنوان السيرفر ورقم البورت بنقطة الهدف IPEndPoint ثم إرسال البيانات باستخدام الميثود Send وتتم عملية الإرسال بما تم تعريفه في ال socket حيث سنستخدم Stream Socket وكما يلي :

 كود
String str = Console.ReadLine();
ASCIIEncoding asen = new ASCIIEncoding();
byte[] msg = asen.GetBytes(str);

Socket MySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint remote = new IPEndPoint(IPAddress.Parse("192.168.1.101"), 5020);
MySocket.Connect(remote);
MySocket.Send(msg);
MySocket.Close();


استخدام ال Socket Programming لإنشاء UDP Connectionless :
تمر عملية الاتصال باستخدام ال UDP Socket Connection بمجموعة من المراحل وهي كما في الشكل التالي :



وتتشابه عملية الاتصال كما في ال TCP إذ تبدأ العملية في ال Client و ال server بإنشاء ال Socket كما يلي :
 كود

Socket MySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Udp);


ثم ربط ال Socket مع الكمبيوتر الحالي باستخدام الميثود Bind وتستخدم فقط عند الاستقبال وكما يلي :
 كود
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 5020);
MySocket.Bind(sender);


ولاستقبال البيانات نستخدم الميثود ReceiveFrom حيث نعرف في البداية End Point Reference بناء على ما تم تعريفه في السابقة ونمرره ك reference مع مصفوفة ال Byte إلى الميثود ReceiveFrom ومن ثم نستطيع تحويل المصفوفة إلى String من خلال الميثود GetString الموجودة ضمن الكلاس ASCII وكما يلي :
 كود
int recv;
byte[] data = new byte[1024];
EndPoint Remote = (EndPoint) (sender);
recv = newsock.ReceiveFrom(data, ref Remote);
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));


ويتم في الإرسال استخدام الميثود SendTo حيث نمرر لها البيانات بعد تحويلها من String إلى Byte Array وحجم البيانات المرسلة إذ يمكننا معرفته من خلال الميثود Length ونوع ال Flags حيث نريد عمل Broadcast لرسالة المرسلة واخيرا نمرر له ال EndPoint Object وكما يلي:

 كود
string welcome = "Hello All";
data = Encoding.ASCII.GetBytes(welcome);
newsock.SendTo(data, data.Length, SocketFlags.Broadcast, Remote);


يمكن وضع هذا الأكواد في Infinity While Loop بحيث لا تنتهي أو يمكن تحديدها بعدد معين من عمليات الإرسال والاستقبال ..

ثانيا: Socket Classes Members :

1- IPAddress Class : ويستخدم لتعريف IP Address حيث يمكن إسناده إلى ال IPEndPoint كمثال والصيغة العامة له كما يلي:

 كود
IPAddress newaddress = IPAddress.Parse("192.168.1.1");


ويمكن الإختيار بين اربعة خيارات في تحديد العنوان وهي كما يلي :
Any ويستخدم لتمثيل أي عنوان متاح على الشبكة
Broadcast ويستخدم لتمثيل البث الإذاعي لجميع الأجهزة على الشبكة
Loopback ويستخدم لتمثيل العنوان المعروف لل loopback وهو 127.0.0.1
None ويستخدم في حالة عدم وجود Network Interfase في النظام

كما يدعم مجموعة من الميثود وأهمها :
Equals يستخدم هذا الميثود بشكل عام للمقارنة بين tow Objects وهنا سيستخدم للمقارنة بين عنوانين ويرجع True إذا كانا متشابهين و False إذا كانا مختلفين.
GetHashCode وتستخدم لإرجاع العنوان إلى صيغة Hash Code
HostToNetworkOrder ويرجع الجزء الخاص بال Network من العنوان
NetworkToHostOrder ويرجع الجزء الخاص بال Host من العنوان

2- IPEndPoint Class : حيث استخدمناه لتحديد العنوان وال Port لل Host والذي نريد الاتصال به والصيغة العامة له كما يلي :
IPEndPoint end = new IPEndPoint(IPAddress.Parse("192.168.1.1"), 5020);


مجموعة الخواص التي تدعم في ال Socket Class وهي كما يلي:
AddressFamily ويرجع مجموعة العناوين المعرفة على ال Socket
Available ويرجع حجم البيانات الجاهزة للقراءة من ال Socket
Blocking ويعطي Get أو Set لمعرفة إذا كان ال socket يستخدم ال Blocking Mode أم لا
Connected وتستخدم هذه الخاصية بكثرة لمعرفة إذا كان ال Socket متصل مع ال Remote Host أم لا
Handle ويستخدم لمعرفة نظام التشغيل الذي يتعامل مع ال Socket
ProtocolType ويستخدم لمعرفة البروتوكول الذي يستخدم في ال Socket
RemoteEndPoint ويرجع معلومات عن ال Socket الذي يستخدم مع ال Remote Host

وكمثال لاستخداماتها:
 كود
using System;
using System.Net;
using System.Net.Sockets;
class Socket_ Properties
{
public static void Main()
{
IPAddress ia = IPAddress.Parse("127.0.0.1");
IPEndPoint ie = new IPEndPoint(ia, 8000);
Socket fmo = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
Console.WriteLine("AddressFamily: {0}",
fmo.AddressFamily);
Console.WriteLine("SocketType: {0}",
fmo.SocketType);
Console.WriteLine("ProtocolType: {0}",
fmo.ProtocolType);
Console.WriteLine("Blocking: {0}", fmo.Blocking);
fmo.Blocking = false;
Console.WriteLine("new Blocking: {0}", fmo.Blocking);
Console.WriteLine("Connected: {0}", fmo.Connected);
fmo.Bind(ie);
IPEndPoint iep = (IPEndPoint)fmo.LocalEndPoint;
Console.WriteLine("Local EndPoint: {0}",
iep.ToString());
fmo.Close();
}
}



حيث سترجع المعلومات التالية:
 كود
AddressFamily: InterNetwork
SocketType: Stream
ProtocolType: Tcp
Blocking: True
new Blocking: False
Connected: False
Local EndPoint: 127.0.0.1:8000
Press any key to continue . . .


ثالثا: TCP & UDP Classes Members :

أولا ال Classes الخاصة بالOriented Protocol TCP Connection :




1-Class TcpClient: حيث تحتوي على مجموعة من ال Methods وال Properties وهي كما يلي:

أولا: أهم الميثود الخاصة بها TCPClient Methods :

Connect: وتستخدم لأجراء عملية الاتصال مع ال server حيث نمرر فيها عنوان ال IP الخاص بال Server و رقم البورت وكما يلي:
 كود
TcpClient tcp = new TcpClient();
tcp.Connect(IPAddress.Parse("192.168.1.1"),5020);


Close: لإنهاء الاتصال مع ال TCP Socket.
EndConnect: لإنهاء Asynchronies Connection حيث ترجع Asynchronies Result.
GetStream: ويستخدم لقراءة ال Stream من ال Socket في عملية الإرسال و الاستقبال.



ثانيا: أهم الخصائص TCPClient Properties :

LingerState : وتأخذ get أو Set لتحديد أو معرفة ال Linger Time
NoDelay: وتأخذ get أو Set لتحديد أو معرفة إذا كان هناك وقت معين لتأخير أم لا
ExclusiveAddressUse: وتأخذ get أو Set لتحديد أو معرفة السوكت يسمح باستخدام ال Client Port أم لا.
SendBufferSize و ReceiveBufferSize: وتأخذ get أو Set لتحديد أو معرفة حجم ال Buffer المستخدم في ال stream والمعرف في TCP Client Object.
SendTimeout و ReceiveTimeout: وتأخذ get أو Set لتحديد أو معرفة الوقت المتاح لعملية الإرسال أو الإستقبال حيث يعطي Time Out في حالة أنه لم يجد الطرف الأخر خلال فترة زمنية معينة.

2-Class TcpListener: حيث تحتوي على مجموعة من ال Methods وال Properties وهي كما يلي:



أولا: أهم الميثود الخاصة بها TcpListener Methods :

AcceptSocket: وتستخدم لقبول عملية الاتصال مع ال Client.
Start : وهي Overloaded Method حيث انه في حالة تمرير رقم إليها يتم تحديد عدد الأجهزة التي تسمح بوجودها في الطابور أو ال Qouee وبدون تحديد رقم معين يصيح ال Qouee غير محدد.
Stop : وتستخدم لإخلاق عملية التصنت ويفضل وضعها في ال Finnaly عند استخدام ال Try و ال Catch حتى يتم إخلاق التصنت في حالة حدوث أي Exception.

ثانيا: أهم الخصائص في TcpListener:

LocalEndpoint : حيث يرجع ال IP ورقم البورت المستخدم في ال LocalEndpoint المحدد.
Server: ومن خلالها نستطيع الوصول إلى كل الخصائص و الميثود في ال TCP Server والتي شرحناها سابقا مثل ال Accept وال Sendto وال Receive و Listen وغيرها


ثانيا ال Classes الخاصة بال Protocol UDP Connectionless :

1-Class UdpClient: وتستخدم لتعريف UDP Datagram Protocol Connection قمنا سابقا بتعريفها والتعامل معها وفي هذا الدرس سنبين أهم محتوياتها وهي كما يلي :



ومن أهم الميثود والخصائص الخاصة بها :

JoinMulticastGroup و DropMulticastGroup: لضم أو إلغاء عنوان أو مجموعة من العناوين من ال Multicast Group.
EnableBroadcast: وتأخذ Get أو Set لتفعيل ال Broadcasting في ال socket.
MulticastLoopback: وتأخذ Get أو Set لمعرفة أو تحديد ال Mlticast Loopback.


2-Class MulticastOption: ويستخدم في ال Multicasting حيث يتم تخزين IP Address List لتعامل معها في Multicast Group لعمل Join و Drop لأي Multicast Group وتستخدم كما يلي كمثال لإضافة عضوية لاستقبال رسائل Multicast :

أولا نعرف ال UDP Socket وكما يلي :

 كود
mcastSocket = new Socket(AddressFamily.InterNetwork,SocketType.Dgram,
ProtocolType.Udp);


ثانيا نقوم بتعريف Address List ثم نسند إليها ال IP الذي نريد إدخاله في ال Group أو نجعل ال User يدخل العنوان بنفسه نربطها بالسكوت باستخدام الميثود Bind وكما يلي :

 كود
IPAddress localIPAddr = IPAddress.Parse(Console.ReadLine());
mcastSocket.Bind(IPlocal);


ثالثا نقوم بتعريف ال Multicast Option ونسند لها العنوان المحدد كما يلي:

 كود
MulticastOption mcastOption;
mcastOption = new MulticastOption(localIPAddr);


ومن ثم نضيف التغير على ال حيث تأخذ هذه الميثود ثلاثة باروميترات الأول لتحديد مستوى التغيير على IP أو على IPv6 أو على Socket أو TCP أو UDP وفي حالتنا هذه سوف نستخدم التغير على IP إذ ما نريده هو ضم IP إلى Multicast Group وفي الباروميتر الثاني نحدد نوع التغيير حيث نريد إضافة عضوية ويمكن الاختيار بين إضافة عضويه AddMembership أو إلغاء عضوية DropMembership وأخيرا نسند إليه ال MulticastOption Object والذي قمنا بإنشائه و كما يلي:

 كود
mcastSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership,mcastOption);



في الدرس القادم سوف نتحدث عن ال Asynchronous Sockets ونطبق مجموعة من الأمثلة العملية عليها إنشاء الله.



الملفات المرفقة
 (L11) Socket & Network Layer Programming.zip ( 193.18ك ) عدد مرات التنزيل: 58980
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالسبت,01/ذو الحجة/1426 هـ,06:19 صباحاً
المشاركة #37

الرتبة في المنتدى:ملازم

أيقونة المجموعة

المجموعة: أعضاء فعالين
المشاركات: 198
سجل في:الثلاثاء,15/ذو الحجة/1425 هـ,02:35 مساءً
الدولة:اليمن
رقم العضوية: 1329



السلام عليكم ورحمة الله وبركاته
أولا تسلم على هذة الدروس الي زي العسل مع أني مقصر جدا في التطبيق وما زلت في البداية جدا الله يعينني ويعينك علي

لقد قرأت الدرس الخاص بالـ HTTP وأريد تطبيق المفاهيم التي وردت فية على هيئة مثال حتى تتوضح لي المفاهيم ولغيري :
المثال هو:
لنفرض أنة لدينا صفحة إنترنت تتعامل مع قاعدة بيانات(access ) . هذة الصفحة تعمل كالإميل أي أن هناك عدة مشتركين يدخلون إلى هذة الصفحة ويتصفحون البريد الخاص بهم وأيضا يقومون بإرسال أي رسالة يريدونها ، أي مثل صفحات الـ YAHOO , HOTMAIL .
وبالإعتماد على هذا المثال لدي الملاحضات التالية :
أولا:
عملية إنزال الرسائل الخاصة بكل مستخدم من الـ POP3 سوف تتم بالطريقة التي ذكرناها في المشاركة السابقةوكما تفضلت فإن إنزال الرسائل سوف تتم إلى قاعدة بيانات.
ولكن أنا قلت أنة إذا كان مع الرسالة مرفق بالطبع سوف يكون هناك معلومات في الرسالة عن إسم المرفق وليكن pic.rar (مع أنة كان هناك رموز ومعلومات غريبة لم أفهم إلى ماذا تشير بالضبط)
وبالإشارة إلى الرد الذي قلتة مسبقا
(إذ تكون المرفقات في ا لعادة من النوع Binary ولإنزالها لابد من معرفة ال Link الخاص بها على ال POP3 Server )

لدي التساؤلات التالية :
ـ كيف أعرف الـ link الخاص بالمرفق هل سوف يكون موجود ضمن الرسالة التي سوف أنزلها ، وبصراحة أكثر أنا أنزلت رسالة تحتوي على مرفق الشيء الوحيد الذي أستطعت أن أستخلصة من الرسالة والذي يشير إلى المرفق هو أسم المرفق.

ـ بفر ض أننا عرفنا الـ link وليكن مثلا http://somthing/pic.rar
أنا أتصور أن المرفق الذي سوف أنزلة سيكون ملف ولذلك سوف أستخدم طريقة الـ DownloadFile الذي شرحتة في الـ Downloading From Web Server لإنزالة
أم لان البيانات من نوع binary لا تنفع هذة الطريقة وما هي الطريقة التي يجب أن أستخدمها؟؟؟؟؟؟؟؟؟؟؟؟؟.

- لأني سوف أقوم بتخزين الرسائل في قاعدة بيانات فأنا أريد تخزينها بشكل مفصل (date ,from ,subject,messeage) وأقوم بإلغاء الأشياء الزائدة , أستطعت أن أخرج التفاصيل السابقة بإستثناء الرسالة نفسها(message) كيف أصل إلى الرسالة بالضبط ، مثلا إذا أردت أخذ الجزء الخاص بـ from سوف إبحث داخل الرسالة عن :from وأقوم بأخذ الـ string التي تليها ، وهكذا مع البقية بإستثناء الـ messeage نفسها كيف أصل إليها.

وشكرا



--------------------

الحماس خطوة هامة على الطريق، ولكن التقدم الحقيقي هو نتيجه لتصرف صحيح وبشكل ثابت
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالسبت,01/ذو الحجة/1426 هـ,08:29 صباحاً
المشاركة #38

خبير برمجة شبكات ونظم موزعة
الرتبة في المنتدى:رائد

أيقونة المجموعة

المجموعة: مجموعة الخبراء المعتمدين
المشاركات: 506
سجل في:الأحد,28/رمضان/1426 هـ,04:59 صباحاً
الدولة:الأردن
رقم العضوية: 6228



اهلا وسهلا بك اخي students ,

 اقتباس
عملية إنزال الرسائل الخاصة بكل مستخدم من الـ POP3 سوف تتم بالطريقة التي ذكرناها في المشاركة السابقةوكما تفضلت فإن إنزال الرسائل سوف تتم إلى قاعدة بيانات.


انصحك بلإطلاع على الموضوع التالي:
http://www.codeproject.com/csharp/despop3client.asp

إذ انه في ال Yahoo و ال Hotmail وجميع البريد الإلكتروني المعتمد على ال HTTP يتم ارسال المرفق بشكل Binary Data مدمجة مع الرسالة حيث يقوم البريد الإلكتروني بفصل الملحق عن نص الرسالة الأصلية وهو ما سوف تجد طريقته في الرابط السابق ..

في حالة كنت تعمل على إنشاء Email Server بنفسك فيفضل أن ترسل ال Link الخاص بالملف المرفق مع الرسالة بدلا من ارسال الملف مع نص الرسالة كما تعمل جميع ال HTTP Email Server وفي هذه الطريقة سوف تستخدم ال DownloadFile بحيث سيتم تخزين الملف على نفس الجهاز وليس على قاعدة البيانات , أو أن تقوم بإرساله بشكل منفصل عن نص الرسالة بحيث تستخدم ال Stream Reader&Writer لنص الرسالة وال Binary Reader&Writer للملحقات ثم عند الإستقبال تقوم بتخزين ال Stream في قاعدة بيانات المستخدم , بحيث تكون من النوع Image للمرفقات (SQL Server) أو memo في حالة (MS Access) ..

انظر إلى البرنامج الموجود في المرفقات



الملفات المرفقة
 POP3.rar ( 67.92ك ) عدد مرات التنزيل: 723
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالأحد,02/ذو الحجة/1426 هـ,05:05 صباحاً
المشاركة #39

الرتبة في المنتدى:ملازم

أيقونة المجموعة

المجموعة: أعضاء فعالين
المشاركات: 198
سجل في:الثلاثاء,15/ذو الحجة/1425 هـ,02:35 مساءً
الدولة:اليمن
رقم العضوية: 1329



السلام عليكم ورحمة الله وبركاته
أشكرك أخي فادي على هذا التجواب , إن شاء الله سوف أقرأ الموضوع وأطلع على البرنامج.



--------------------

الحماس خطوة هامة على الطريق، ولكن التقدم الحقيقي هو نتيجه لتصرف صحيح وبشكل ثابت
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالأحد,02/ذو الحجة/1426 هـ,02:50 مساءً
المشاركة #40

الرتبة في المنتدى:ملازم

أيقونة المجموعة

المجموعة: أعضاء فعالين
المشاركات: 198
سجل في:الثلاثاء,15/ذو الحجة/1425 هـ,02:35 مساءً
الدولة:اليمن
رقم العضوية: 1329



أخي فادي العفو منك ولكني أنزلت البرنامج الذي أعطيتة لي كمرفق وقمت بتنفيذة أكثر من مرة وفي أوقات متفرقة( وذلك بعد ما غيرت الـ usetname والـ password وكذلك اسم الـسيرفر بالطبع) وعند الضغط على recive لم أرى أي شيء أي كأني لم أعمل شيء وعندما أضغط على cancel تظهر الرسالة التالية

RecieveCallback
errorSystem.Net.Sockets.SocketException: The I/O operation has been aborted because of either a thread exit or an application request
at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)
at PramodSingh.LibPOP3.POP3.ReceiveCallback(IAsyncResult ar)


--------------------

الحماس خطوة هامة على الطريق، ولكن التقدم الحقيقي هو نتيجه لتصرف صحيح وبشكل ثابت
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة

    

عدد المتصفحين لهذا المنتدى «1»: (الضيوف «1» - المتخفون «0»)
الأعضاء «0»: .

عدد الصفحات : 9  « < 1  2  3  4  5  6  7  8   > » إضافة رد جديد إضافة موضوع جديد



 
الوقت الأن:اليوم,07:09 مساءً بتوقيت القدس المحتلة

Powered By arabmoheet v3.1

منتديات المحيط العربي  -  راسلنا  -   أعلى
X   رسالة المنتدى
(سوف يتم اغلاق هذه النافذة بعد 2 ثانية)
X   رسالة المنتدى
(سوف يتم اغلاق هذه النافذة بعد 2 ثانية)