منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : اتصال UDP بين جهازين
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم

انا بشتغل على مثال  للاتصال بين جهازين عن طريق UPD والكود شغال على 172.0.0.1  local

اما لما جبت الاى بى الخاص بجهازى اجربه عن طريق الموقع ده /http://icanhazip.com
وكتبته بالكود للاتصال فشل فى تشغيل السيرفر
ووضعت للبورت 0  او 3000 وارقام تانية ومااشتغلش بيظهر الرسالة دى




ده الكود  فى حدث اللود فروم 
كود :
try
   {
       CheckForIllegalCrossThreadCalls = false;

       //We are using UDP sockets
       serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);


       //Assign the any IP of the machine and listen on port number 1000
       IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse("156.199.70.200"), 0);

       //Bind this address to the server
       serverSocket.Bind(ipEndPoint);

       IPEndPoint ipeSender = new IPEndPoint(IPAddress.Parse("156.199.70.200"), 0);
       //The epSender identifies the incoming clients
       EndPoint epSender = (EndPoint)ipeSender;

       //Start receiving data
       serverSocket.BeginReceiveFrom(byteData, 0, byteData.Length,
           SocketFlags.None, ref epSender, new AsyncCallback(OnReceive), epSender);
   }
   catch (Exception ex)
   {
       MessageBox.Show(ex.Message, "msg", MessageBoxButtons.OK, MessageBoxIcon.Error);
   }

ياريت حل
IP Address غير صحيح
لذا لا يمكن التنصت عليه

127.0.0.1 هو العنوان الداخلي للحاسب , لا يفيد كثيرا

يمكن الحصول على عناوين الحاسب عن طريق هذه الدالة
Dns.GetHostEntry(Dns.GetHostName).AddressList
(15-12-16, 01:07 PM)Fantastico كتب : [ -> ]IP Address غير صحيح
لذا لا يمكن التنصت عليه

127.0.0.1  هو العنوان الداخلي للحاسب , لا يفيد كثيرا

يمكن الحصول على عناوين الحاسب عن طريق هذه الدالة
Dns.GetHostEntry(Dns.GetHostName).AddressList

شكرا لردك اخى
انا بتصل بجازين ليسو فى شبكة واحدة
الكود يعمل جيدا لوكل على جهازى
اما لما بجيب الاى بى العالمى الخاص بجهازى عن طريق موقع http://icanhazip.com

وبضع الاى بى فى الكود كما رأيت فى مشاركتى الاولى لا يتصل السيرفر اصلا بالكود
اتمنى ان اكون وضحت مشكلتى
لا أعرف الكثير عن الاتصال عبر الشبكة العالمية

لكن اقترح أن تتنصت على أي IP
PHP كود :
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any0);
 
    serverSocket.Bind(ipEndPoint); 

لأن العنوان العالمي غير موجود ضمن قائمة العناوين
ولا يظهر عند عمل Ping له
هل ال ريفرنس DLL ده ديمو استاذ امجد ؟
يجب فتح البورت في السيرفر
فتحت البورت على الراوتر ونفس المشكلة
حدثت معي نفس المشكلة في السابق الاتصال بين الكلايننت و السيرفر يعمل بشكل جيد عند الاتصال الداخلي و لا يعمل عند الاتصال الخارجي 
و حليتها بتفعيل خاصية DMZ في الراوتر 
ندخل الى اعدادات الراوتر و نقوم بتفعيل  خاصية DMZ كما في الصورة 
 مع ضرورة كتابة الأيبي الداخلي للجهاز الذي فيه برنامج السيرفر  : 192.168.1.2 أو 192.168.1.3 أو ......
شكرا اخى ولكن لم تعمل
ياريت الاعدادات الى عملتها كلها على الراوتر لأنها غالبا المشكلة بها مش بالكودد

انا تعبت من امبارح بحث Sad Sad
الصفحات : 1 2