سلام، من می خوام کلاینتهایی که به سرور کانکت می شن رو IP هاشونو ذخیره کنم، از اساتید در این مورد خواهش می کنم که کمک کنند. ممنون، منتظر پاسخم...
Printable View
سلام، من می خوام کلاینتهایی که به سرور کانکت می شن رو IP هاشونو ذخیره کنم، از اساتید در این مورد خواهش می کنم که کمک کنند. ممنون، منتظر پاسخم...
توضیح بدید که از چه روشی برای ارتباط استفاده می کنید؟ آیا از کلاس UDPClient استفاده کردید؟ یا از ابزارهای دیگه ای؟
تو متد OnRecieve اون object ای که از IpEndpoint ساختین IP کلاینت رو هم بهتون میده. میتونین از اون استفاده کنید.
تشکر می کنم جناب آقای اویسی، اما اینکه چه جوری IP رو با با Object از نوع IPEndPoint بگیرم رو نمی دونم، خیلی کار کردم اما موفق نشدم!!! ممنون از لطفتون
اینم بگم من تو متد OnReceived به این شکل خواستم IP رو دریافت کنم اما نشد:
q= ipeSender.Address.ToString();
منظورتون از نشد دقیقا چی هست؟ خطا میده؟ چیز دیگه ای نشون میده؟ لطفا توضیحات دقیق بدید
ممنون آقای اویسی، والا من کاری نمی کنم فقط تگ #C رو می زنم و کدم رو وارد می کنم، اما نمی دونم چرا اینجوری می شه، منظورم از ای که نشد اینه که 0.0.0.0 رو بر دریافت می کنم! و الا خطایی نمی ده! وقتی ipesender رو به رشته تبدیل می کنم و چاپ می کنم 0 بر می گردونه همین! اصلا خطا ندارم!
جناب 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/4...ceiver-address