Follow us on Facebook Follow us on Twitter Linked In Flickr Watch us on YouTube My Space Blogger
التسجيل
النتائج 1 إلى 5 من 5

شرح تقنية WCF والتخصص بال Sockets مع مثال دورة C#

هذا الموضوع : شرح تقنية WCF والتخصص بال Sockets مع مثال دورة C# داخل البرامج والتقنية | Programs & Softwareالتابع الي قسم المنتديات التقنية : السلام عليكم ورحمة الله وبركاته... اليوم وفي أول درس من المستوى المتوسط أولا سوف نقوم بشرح ال WCF بشكل عام ...

  1. #1

    الصورة الرمزية waleed_ali
    مشرف القسم العام والإسلامي

    الحالة
    غير متصل
    تاريخ التسجيل
    Jan 2010
    الدولة
    A, A
    المشاركات
    20,140
    Thanks
    587
    Thanked 288 Times in 256 Posts
    الصور
    21
    معدل تقييم المستوى
    433

    شرح تقنية WCF والتخصص بال Sockets مع مثال دورة C#

    السلام عليكم ورحمة الله وبركاته...
    اليوم وفي أول درس من المستوى المتوسط أولا سوف نقوم بشرح ال WCF بشكل عام ثم التخصص بالSockets


    أولا: WCF : Windows Communication Foundation

    هي تقنية جديدة مقدمة من Microsoft للبرامج التي تعمل في الإتصال مع شبكات أو مع كومبيوترات أخرى ... مثل برامج الحادثة (( أي تقنية للربط بين جهازين ما ))

    - ما هي مجالات إستخدام ال WCF ...
    لا تظن أن تقنية ال WCF ظهرت من أجل غرض فقط بل يمكنك من خلالها القيام ب WebService وذلك كما سوف ترى في الدروس القادمة...

    أن العمل على المجال العام للربط بين الأجهزة أو ماشابه ذلك يتم في المجال System.Runtime.Remoting

    ولكن نحن لن نستخدمه أبدا لأننا سوف نستخدم شيئ أقوى من هذا المجال العام لهذا الغرض وهو ال Sockets ....


    البداية مع ال Sockets:
    لأدخلك من باب رائع في إستخدام ال Sockets أولا عليك فهم ما يلي:

    1- IP Address :
    وهو عنوان بروتوكول الإنترنت ويكون ال ip لكل كومبيوتر غير متصل بشبكة هو 127.0.0.1
    أما الكمبيوتر المتصل بشبكة فسوف يكون رقم ما غير معين...

    2- Port:
    وهي المنفذ الذي يقوم البرنامج بالإنتظار بينما يقوم البرنامج الاخر بالإتصال على هذا المنفذ وتكون ال Port من تحديدك مثلا 1220...

    - تكوينة برامج الإتصال...

    أولا يجب أن تفهم مايلي:
    1- أن كل برنامج من هذا النوع يتألف من Server و Cilent (( خادم و عميل ))
    2- ما الخادم والعميل إلا برنامجان متصلان مع بعضهم البعض بواسطة IP Address و Port موحدة...
    3- إن العميل هو الذي يرسل البيانات للخادم لكي يتم تنفيذ ما تريد...
    4- إن الخادم مهمته إنتظار العميل بينما يقوم بالإتصال به عبر ال IPAddress الخاص بالجهاز الذي يملكه الخادم.


    - مثال بسيط...

    قم بإنشاء مشروع WindowsFormApplication جديد وسميه Cilent ...

    وفتح ال Visual Studio مرة أخرى وقم بإنشاء مشروع Console Application جديد...

    الان إذهب إلى ال Cilent وبدأ معي:

    أولا قم بتعريف المتغيرين العامين التاليين على الشكل التالي:

    كود PHP:
    Socket mysoc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
    IPEndPoint PC******** = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1480);

    بدلا من النجوم ضع كلمة L ocation مع حذف المسافة بين حرفي الـ L و O
    (( تنبيه للمنتقلين من المستوى المبتدئ متغير عام يعني أن يضع المتغير داخل Class وليس داخل دوال ما مثلا كما فعلنا الان فيكون الكود كاملا:

    كود PHP:
    namespace Cilent
    {
    public partial class Form1 : Form
    {
    Socket mysoc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
    IPEndPoint PC******** = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1480);
    public Form1()
    {
    InitializeComponent();
    }
    }
    }

    قهكذا يكون المتغير عام ))

    أولا سوف نشرح المتغير الأول mysoc وهو ال Socket المستخدمة لإقامة الإتصال بين البرنامجين وأما عن المعطيات فلا تقلق فشرحها سوف تجده ولكن الان يهمني أن تعلم أن اخر معطية هي أننا نود إستخدام ال IP Address لكي يجد البرنامجين بعضهما...

    ثانيا: PC******** وهو متغير يتم من خلاله تحديد ال IPAddress وال Port للكومبيوتر لإستخدامها في ما بعد وأما عن الدالة Parse فقد تم شرحها في الدروس السابقة...

    الان ضع ثلاثة Button وسم الأول Connect والثاني Disconnect والثالث Send Message

    الان أدخل إلى الحدث Click الخاص بال Button1 واكتب...

    كود PHP:
    if (mysoc.Connected == false)
    {
    try
    {
    mysoc.Connect(PC********);
    }
    catch (Exception x)
    {
    MessageBox.Show(x.Message);
    }
    }
    else if (mysoc.Connected == true)
    {
    MessageBox.Show("you are already connected to a server in:" + mysoc.LocalEndPoint);
    }

    وهنا قد إستخدمنا الأمر Connect كما هو واضح أعلاه حيث أعطيناه مكان الكومبيوتر الاخر...

    ** أظن أن هذا الكود واضح تماما **

    والان إذهب إلى الحدث Click لل Button2 واكتب...

    كود PHP:
    if (mysoc.Connected == true)
    {
    try
    {
    mysoc.Disconnect(false);
    }
    catch (Exception x)
    {
    MessageBox.Show(x.Message);
    }
    }
    else if (mysoc.Connected == false)
    {
    MessageBox.Show("your are not connecting to any server..");
    }

    والان إذهب إلى الحدث Click الخاص بال Button3 واكتب...

    كود PHP:
    if (mysoc.Connected == true)
    {
    try
    {
    byte[] mymes = new byte[5];
    mymes[0] = 1;
    mymes[1] = 2;
    mymes[2] = 3;
    mymes[3] = 4;
    mymes[4] = 5;
    mysoc.Send(mymes);
    }
    catch (Exception x)
    {
    MessageBox.Show(x.Message);
    }
    }
    else if (mysoc.Connected == false)
    {
    MessageBox.Show("Connect to server first!");
    }

    وهكذا نكون قد أتتممنا ال Cilent ...

    __________________________________________________ ______________________

    والان حان دور ال Server ...

    كون السيرفر Console Application فإنه في حال فقدان جميع ال ForeTherads سوف يغلق البرنامج لذلك سوف نضطر إلى عمل Thread لا منتهية لحل هذه الأزمة...
    (( لا يقلق الصاعدين من المبتدئ لأن هذا الموضوع لم أتطرق عليه بالدورة بعد ولكن وقته بات قريبا ))

    قم بعمل ال Thread بالشكل التالي:

    ولا قم بإضافة هذا الأمر:

    كود PHP:
    static void infinity()
    {
    System.Threading.Thread.CurrentThread.Suspend();
    }

    ثم ضف Thread وشغلها كالتالي:

    كود PHP:
    System.Threading.Thread life = new System.Threading.Thread(infinity);
    life.Start();

    فيصبح الكود كامل:

    كود PHP:
    namespace Server
    {
    class Program
    {
    static void Main(string[] args)
    {
    System.Threading.Thread life = new System.Threading.Thread(infinity);
    life.Start();
    }
    static void infinity()
    {
    System.Threading.Thread.CurrentThread.Suspend();
    }
    }
    }

    والان لنبدأ بالسيرفر:

    أولا قم بتعريف المتغيرين العامين نفسهم...

    كود PHP:
    static Socket mysoc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
    static IPEndPoint PC******** = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1480);

    ثم بعد بعض الإضافات يكون الكود كاملا...

    كود PHP:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net.Sockets;
    using System.Net;
    namespace Server
    {
    class Program
    {
    static Socket mysoc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
    static IPEndPoint PC******** = new IPEndPoint(IPAddress.Any, 1480);
    static void Main(string[] args)
    {
    System.Threading.Thread life = new System.Threading.Thread(infinity);
    System.Threading.Thread listen = new System.Threading.Thread(filerec);
    listen.Start();
    life.Start();
    }
    static void infinity()
    {
    System.Threading.Thread.CurrentThread.Suspend();
    }
    static void filerec()
    {
    mysoc.Bind(PC********);
    mysoc.Listen(5);
    Console.WriteLine("waiting for cilent...");
    Socket cilent = mysoc.Accept();
    Console.WriteLine("connection accept! receving data...");
    byte[] msg = new byte[5];
    cilent.Receive(msg);
    Console.WriteLine(msg[0].ToString());
    Console.WriteLine(msg[1].ToString());
    Console.WriteLine(msg[2].ToString());
    Console.WriteLine(msg[3].ToString());
    Console.WriteLine(msg[4].ToString());
    }
    }
    }

    والان لم يبقى عليك إلا تجربة البرنامج كالتالي...

    إفتح الServer ثم إفتح ال Cilent وإضغط على زر Connect سوف تلاحظ إتصل ال Cilent بال Server
    الان إضغط على زر Send Message فقوم ال Cilent بإرسال رسالة إلى ال Server ويقوم ال Server بتلقيها وطباعتها على ال Console



  2. #2


    الصورة الرمزية 4MAX
    الإشراف العام

    الحالة
    غير متصل
    تاريخ التسجيل
    Jul 2009
    الدولة
    فى القلب
    العمر
    29
    المشاركات
    19,932
    Thanks
    983
    Thanked 241 Times in 199 Posts
    الصور
    6
    معدل تقييم المستوى
    462

    رد: شرح تقنية WCF والتخصص بال Sockets مع مثال دورة C#

    جزاك الله خيرا
    ان لله عبادا اختصهم لقضاء حوائج الناس
    حببهم للخير وحبب الخير لهم
    اولئك هم الامنون من عذاب الله يوم القيامه
    =====

    بروا آبائكم يبروكم أبنائكم




    ĎΞs!GŖ

    مركز طريق الجرافيك التعليمي

  3. #3

    الصورة الرمزية waleed_ali
    مشرف القسم العام والإسلامي

    الحالة
    غير متصل
    تاريخ التسجيل
    Jan 2010
    الدولة
    A, A
    المشاركات
    20,140
    Thanks
    587
    Thanked 288 Times in 256 Posts
    الصور
    21
    معدل تقييم المستوى
    433

    رد: شرح تقنية WCF والتخصص بال Sockets مع مثال دورة C#

    وانت ايضا اخى الكريم

  4. #4

    الصورة الرمزية arif2008
    مشرف قسم المبتدئين في الماكس

    الحالة
    غير متصل
    تاريخ التسجيل
    Mar 2008
    الدولة
    السودان
    المشاركات
    3,580
    Thanks
    0
    Thanked 8 Times in 7 Posts
    الصور
    9
    معدل تقييم المستوى
    113

    رد: شرح تقنية WCF والتخصص بال Sockets مع مثال دورة C#

    أحسنت أخي وليد <<
    ( حسبنا الله سيؤتينا الله من فضله إنا إلى الله راغبون ) دعاء الفرج بعد التشهد الأخير

  5. #5

    الصورة الرمزية waleed_ali
    مشرف القسم العام والإسلامي

    الحالة
    غير متصل
    تاريخ التسجيل
    Jan 2010
    الدولة
    A, A
    المشاركات
    20,140
    Thanks
    587
    Thanked 288 Times in 256 Posts
    الصور
    21
    معدل تقييم المستوى
    433

    رد: شرح تقنية WCF والتخصص بال Sockets مع مثال دورة C#

    بارك الله فيك اخى عارف


 

 

المواضيع المتشابهه

  1. مثال تطبيقي لمشروع هندسي
    بواسطة chahrazed في المنتدى Autodesk 3D Studio Max
    مشاركات: 7
    آخر مشاركة: 15 / 02 / 2013, 10 : 04 PM
  2. [برنامج]: شرح مبسط لـ Visual MAXScript + مثال مشروح بالتفصيل
    بواسطة Ojail في المنتدى أدوات الماكس | 3dsMax Resources
    مشاركات: 14
    آخر مشاركة: 13 / 10 / 2012, 13 : 06 PM
  3. درس شرح الاداة boolean مع مثال بسيط
    بواسطة ammarkhatib في المنتدى الدورات والدروس التعليمية | 3dsMax Tutorials & Tips
    مشاركات: 52
    آخر مشاركة: 14 / 06 / 2012, 00 : 11 PM
  4. طلب درس : تاثير اللون على الصورة : يوجد مثال
    بواسطة وسام السامرائي في المنتدى الفوتوشوب | Adobe PhotoShop
    مشاركات: 2
    آخر مشاركة: 18 / 08 / 2011, 02 : 04 PM
  5. صناعة الأفلام (مثال مشروح بالتفصيل)
    بواسطة msamax في المنتدى الدورات والدروس التعليمية | 3dsMax Tutorials & Tips
    مشاركات: 15
    آخر مشاركة: 21 / 02 / 2007, 16 : 08 PM

الكلمات الدلالية لهذا الموضوع

المفضلات

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  
الساعة الآن 51 : 01 PM
Powered by vBulletin® Version 4.2.3
Copyright © 2017 vBulletin Solutions, Inc. All rights reserved.
Search Engine Optimization by vBSEO