PDA

View Full Version : چاپ IP کلاینتهای کانکت شده به سرور در مدل UDP



rokhsareh.heshmat
شنبه 30 مهر 1390, 12:26 عصر
سلام، من می خوام کلاینتهایی که به سرور کانکت می شن رو IP هاشونو ذخیره کنم، از اساتید در این مورد خواهش می کنم که کمک کنند. ممنون، منتظر پاسخم...

Amir Oveisi
دوشنبه 02 آبان 1390, 13:35 عصر
توضیح بدید که از چه روشی برای ارتباط استفاده می کنید؟‌ آیا از کلاس UDPClient‌ استفاده کردید؟‌ یا از ابزارهای دیگه ای؟

Amir Oveisi
دوشنبه 02 آبان 1390, 16:51 عصر
تو متد OnRecieve اون object ای که از IpEndpoint ساختین IP کلاینت رو هم بهتون میده. میتونین از اون استفاده کنید.

rokhsareh.heshmat
سه شنبه 03 آبان 1390, 09:38 صبح
تشکر می کنم جناب آقای اویسی، اما اینکه چه جوری IP رو با با Object از نوع IPEndPoint بگیرم رو نمی دونم، خیلی کار کردم اما موفق نشدم!!! ممنون از لطفتون

rokhsareh.heshmat
سه شنبه 03 آبان 1390, 09:53 صبح
اینم بگم من تو متد OnReceived به این شکل خواستم IP رو دریافت کنم اما نشد:

q= ipeSender.Address.ToString();

Amir Oveisi
سه شنبه 03 آبان 1390, 14:41 عصر
منظورتون از نشد دقیقا چی هست؟ خطا میده؟ چیز دیگه ای نشون میده؟ لطفا توضیحات دقیق بدید

rokhsareh.heshmat
سه شنبه 03 آبان 1390, 16:08 عصر
ممنون آقای اویسی، والا من کاری نمی کنم فقط تگ #C رو می زنم و کدم رو وارد می کنم، اما نمی دونم چرا اینجوری می شه، منظورم از ای که نشد اینه که 0.0.0.0 رو بر دریافت می کنم! و الا خطایی نمی ده! وقتی ipesender رو به رشته تبدیل می کنم و چاپ می کنم 0 بر می گردونه همین! اصلا خطا ندارم!

Amir Oveisi
پنج شنبه 05 آبان 1390, 15:11 عصر
جناب rokhsareh.heshmat لطفا اندکی صبر پیشه کنید!
و اما در مورد مشکلتون. فکر کنم به خاطر اینه که شما موقع bind کردن socket از IpAddress.Any استفاده کردید. به جاش از 127.0.0.1 استفاده کنید و بعد برای بدست آوردن IP های موجود بیاید دونه دونه IP های DNS‌رو چک کنید.
foreach(IPAddress addr in Dns.GetHostEntry(Dns.GetHostName()).AddressList){
if(addr.AddressFamily != AddressFamily.InterNetwork) continue; //Skip all but IPv4 addresses.

Socket s = new Socket(addr.AddressFamily, SocketType.Dgram, ProtocolType.Udp);
s.Bind(new IPEndPoint(addr, 12345));

EndPoint newClientEP = new IPEndPoint(IPAddress.Any, 0);
s.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref newClientEP, DoReceiveFrom, s);
}


کد کاملش اینجا هست:
http://stackoverflow.com/questions/4147542/c-sharp-udp-socket-get-receiver-address