الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكله كبيره لحقوني The requested address is not valid in its context

مغلق
بدأه badarhn في 28 يناير 2007 · 9 رد · 1,572 مشاهدة · في برمجة الشبكات والتطبيقات الموزعة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

شباب الفزعه الفزعه

عندي مشكله مش عارف احلها

ساعدوني

المشكله انه في عندي جهاز اسمه TIME MATE واله ip رقمه 192.168.110.254 طيب

المهم

بحاول اسمع لل ip بس المصيبه مش راضي يشتغل وبعطيني الايرور التالي

The requested address is not valid in its context

جربت بألف طريقه بس ع الفاضي

هي كودي

byte [] buff1 = new byte [2500];

//recieve the command from the TimeMateIII

IPAddress ip = IPAddress.Parse("192.168.110.154");

IPEndPoint ipep = new IPEndPoint(ip, 11240);

Socket lsn = new Socket(

ipep.Address.AddressFamily,

System.Net.Sockets.SocketType.Dgram,

System.Net.Sockets.ProtocolType.Udp );

lsn.Bind( ipep );

ارجوكم المساعده

تم تعديل هذه المشاركة بواسطة badarhn في 28 يناير 2007 في 17:54

#2

الأخ العزيز,

لست مضطرا لوضع عنوان المرسل في حالة الإستقبال , فقط قم بتغيير الـIP إلى IPAddress.Any وسيعمل إن شاء الله , في حالة اردت مثلا عدم قبول اي اتصال إلا من هذا الجهاز يمكنك وضع Socket Permission لها (يمكنك الرجوع إلى سلسلة دروس برمجة الشبكات لمزيد من المعلومات)

موفق إن شاء الله

تم تعديل هذه المشاركة بواسطة فادي عبدالقادر في 28 يناير 2007 في 22:50

#3

اخي الحبيب

جزاك الله خير

بس طلعتلي مشكله جديده

مش عارف ارسل اشي لهذا ال ip

برجع بعطيني نفس المشكله

The requested address is not valid in its context

شو اسوي هي كودي

IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 11333);

				Socket mys1 = new Socket(
					ipep.Address.AddressFamily,
					System.Net.Sockets.SocketType.Dgram,
					System.Net.Sockets.ProtocolType.Udp );

				mys1.Bind( ipep );

				//the remote endpoint (the vicking Machine itself)
				//IPAddress rip = IPAddress.Parse("192.168.110.254");
				IPEndPoint rep = new IPEndPoint(IPAddress.Any,11240);

				EndPoint RemoteEP = (EndPoint)rep;

				///send data to the vicking machine:
				int x = mys1.SendTo(buffer, RemoteEP);
				MessageBox.Show("Bytes sent= " + x);
				System.Diagnostics.Debug.WriteLine("Bytes sent= " + x);

				mys1.Close();

تم تعديل هذه المشاركة بواسطة فادي عبدالقادر في 30 يناير 2007 في 02:21

#4

السلام عليكم

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

قمت بعمل Bind على السوكت على افتراض ان الـ IP هو Any وهنا لا يوجد خطأ في حالة كان الأمر انك انت الـServer ويكون الجهاز المرسل هو الـ Client بحيث يقوم بعمل Connect مع جهازك وستعرف انت المتصل معك من خلال الكود الذي كتبته وهو EndPoint RemoteEP = (EndPoint)rep بحيث ان الـIPEndPoint يكون مرتبط مع الـSocket بالـBind

والصحيح في عملية الإستقبال ان تكون بهذه الطريقة

Socket sock = new
Socket(AddressFamily.InterNetwork,SocketType.Dgram,
ProtocolType.Udp);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, Your_port_number);
sock.Bind(iep);
EndPoint ep = (EndPoint)iep;
byte[] data = new byte[1024];
int len = sock.ReceiveFrom(data, ref ep);
string stringData = Encoding.ASCII.GetString(data, 0, len);

اما الإرسال فكما يلي:

Socket sock = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
IPEndPoint iep = new IPEndPoint(your_device_ip , your_port_number );
byte[] data = Encoding.ASCII.GetBytes(“Your Message”); // if your device uses ASCII Encoding
sock.SendTo(data, iep);
sock.Close();

اما عملية ان يقوم السيرفر بالرد على المرسل فيمكن ذلك وبهذه الطريقة

لكن يشترط ان يكون الجهاز المقابل مرتبط مع السيرفر من خلال الـConnect Method

IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 11333);
Socket mys1 = new Socket(
					ipep.Address.AddressFamily,
					System.Net.Sockets.SocketType.Dgram,
					System.Net.Sockets.ProtocolType.Udp );
					mys1.Bind( ipep);
				   EndPoint RemoteEP = (EndPoint) ipep; // must be with the same binded endpoint
				   mys1.SendTo(buffer, RemoteEP);

وفي حالة إذا اردت إرسال القيمة من خلال Endpoint اخر فيجب ان يوضع الـObject الخاص به كـRefrance عند الإستقبال وذلك لمعرفة الجهة التي تتصل بك وتعديل ذلك بالـEndpoint الجديد.

موفق إن شاء الله

#5

اخي

جزاك الله خير

لكن

والله لسه في مشكله

الجهاز ما برد علي ؟؟؟؟

هي الكود تبعي

Console.WriteLine("**** Start Sending .. ****");

Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

IPEndPoint iep = new IPEndPoint(IPAddress.Parse("172.20.1.72"),11333);

byte[] data = Encoding.ASCII.GetBytes("RSLOGkf"); // if your device uses ASCII Encoding

sock.SendTo(data, iep);

//sock.Close();

Console.WriteLine("**** End Sending .. ****");

/*Socket*/

sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

/*IPEndPoint*/

iep = new IPEndPoint(IPAddress.Any,11240);

sock.Bind(iep);

EndPoint ep = (EndPoint)iep;

byte[] dataa = new byte[1024];

Console.WriteLine("**** Start Recev .. ****");

int len = sock.ReceiveFrom(dataa, ref ep);

string stringData = Encoding.ASCII.GetString(dataa, 0, len);

Console.WriteLine("**** End Recev .. **** DATA IS :" + stringData);

Thread.Sleep(10000);

المشكله انه برسل وبضل يستنى الرد ع الفاضي

ايش السبب

وكيف بعرف انه الجهاز استقبل مني الرساله

؟؟؟

الله يجزيك الخير

تم تعديل هذه المشاركة بواسطة badarhn في 30 يناير 2007 في 17:36

#6

ملاحظه

اذا اضفت

sock .Bind(ipep);

يرجع يعطيني ايرور

The requested address is not valid in its context

#7

اريد المساعده

#8

يستقبل الكلاينت الرسالة عند " nt len = sock.ReceiveFrom(dataa, ref ep); " أي تستطيع معرفة إذا تم الإستقبال أم لا في حالة تنفيذ هذه التعليمة و الإنتقال إلى التعليمة التي بعدها ...

عل كل حال أرفق المشروع لنساعدك ...

#9

اخي الكريم قلت لك في البداية انه لا يمكن استخدام هذه الطريقة إلا في حالة كان الـClient متصل مع جهازك باستخدام الدالة Connect إذ يمكن عندها معرفة لـIP الخاص به والإرسال له مباشرة

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

#10

نعم اخي الكريم

اولا غلبتكم معي لكني بالفعل بحاجه لعمل هذا البرنامج جدا

الفكره ان عندي machine في شركتي تعمل بواسطه ال access card او سمها البطاقه الذكيه

لتسجيل اوقات دوام الموظفين في شركتي

عندما تأتي صباحا تضع بطاقتك عند هذه ال machine فتسجل الوقت على ملف وتحفظه في ذاكره داخليه لها

اتى مع هذه ال machine برنامج خاص يتعامل معها ويطلب منها ان تنزل هذا الملف على جهاز الكمبيوتر من ذاكرتها

ارجوا ان تنظر الى المرفق الاول

فكره البرنامج انه يربط على الmachine من خلال ال ip و local port و remot port

كما في الصوره الثانيه

الان انا عملت برنامج ارفقه لك كي تراه وكما ارشدتني في السابق

هدفه فقط ان اجرب ان ابعث امر للmachine وانتظر الرد منها مثل الامر RSLOGkf

الذي يعني للmachine ان تنزل الملف لجهاز الكمبيوتر

المشكله انني لا استطيع ان اربط على ال machine ابدا بينما البرنامج الخاص يربط

وقد سألت عن عده امور منها

1- هل يوجد security على ال ip او ال Ethernet فكان الجواب لا

2- هل هذه ال machine مربوطه على network مختلفه عن اجهزه الdomain فكان الجواب لا

اي المفروض ان تعمل بشكل واضح

لكن كل ما احاول ان اربط من برنامجي يعطيني

The requested address is not valid in its context

اما من البرنامج الخاص للجهاز فيربط بسهوله

ال ip الخاص بجهازي هو 192.168.110.107

ال ip الخاص بالmachine هو 192.168.110.254

وهذه اعدادات ال ip لجهازي بالمرفق الثالث

ارجو المساعده

وجزيتم خيرا

post-60740-1170576869_thumb.jpg

post-60740-1170576886_thumb.jpg

SEND.rar

post-60740-1170577203_thumb.jpg

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…