بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

بدست آوردن ip کاربر در اولین اجرای برنامه

مدیریت گفتگو
red_sky 11 سال پیش
آخرین تغییر: 11 سال پیش

سلام 

من میخوام وقتی که کاربر برای اولین بار برنامه را روی گوشی اجرا میکنه ip ش را بدست بیارم تا یکسری پردازش روی ip انجام بدم میشه راهنمایی کنید که چطور این ip را میشه بدست آورد؟

نظرات

پاسخ‌ها 5

Programmer 11 سال پیش

خدمت شما.تست کنید و نتیجه رو اعلام کنید :

WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());

نظرات

red_sky 11 سال پیش
ممنون بابت جواب ولی روی امولیتور ip را فقط صفر نشون میده 0.0.0.0 روی گوشی خودم هم که ipیی که از مودم گرفتم نشون میده من ipاینترنتش را میخوام باز هم بابت پاسخگویی تون ممنونم

public static String getIPAddress(boolean useIPv4) {
            try {
                List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
                for (NetworkInterface intf : interfaces) {
                    List<InetAddress> addrs = Collections.list(intf.getInetAddresses());
                    for (InetAddress addr : addrs) {
                        if (!addr.isLoopbackAddress()) {
                            String sAddr = addr.getHostAddress().toUpperCase();
                            boolean isIPv4 = InetAddressUtils.isIPv4Address(sAddr);
                            if (useIPv4) {
                                if (isIPv4)
                                    return sAddr;
                            } else {
                                if (!isIPv4) {
                                    int delim = sAddr.indexOf('%'); // drop ip6 port suffix
                                    return delim<0 ? sAddr : sAddr.substring(0, delim);
                                }
                            }
                        }
                    }
                }
            } catch (Exception e) {
    e.printStackTrace();
    }
            return "";
    }

این متد رو با مقدار بولین true صدا بزنید :

getIPAddress(true);

و  این مجوز ها رو هم به manifest اضافه کنید :

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

نظرات

red_sky 11 سال پیش
ممنون بابت جواب ولی کدها در اولین خط در بلاک try و همچنین خط سوم این بلاک ارور داره و من نتونستم برطرفش کنم تا بتونم کد ها را تست کنم باز هم بابت پاسگویی تون ممنونم
red_sky 11 سال پیش
بله ممنون از شما ولی باز هم وقتی تست کردم ip لوکال که از مودم گرفتم را نمایش داد
red_sky 11 سال پیش

با استفاده از php تونستم ipکاربر را بگیرم

کاربر در حین ورود به وب سرویس متصل میشه و ipش مشخص میشه

ممنون از همه

البته نمیدونم این کار درست هست یا نه و نمیدونم با کدنویسی اندروید بدون استفاده از وب سرویس میشه این کار را انجام داد یا نه ولی از همه گی بابت پاسخ هاتون ممنونم

حالا یک سوال دیگه هم دارم اینکه میدونید چطور میشه تشخیص داد کاربر در کدام شهر ایران هست ؟

وب سرویس های زیادی سر زدم ولی هیچ کدومشون شهر ip من را درست تشخیص ندادن

یا راهی هست که با کد نویسی خودمون بتونیم یک وب سرویس مخصوص ipهای ایرانی بنویسیم که شهرشون را درست تشخیص بده؟

من فقط شهر را میخوام نه آدرس همین که شهرشون را تشخیص بده کافیه

نظرات

AhmadVB 11 سال پیش

شما نمی توانید از روی آی پی شهر مشترک را تشخیص دهید.

اولا به این خاطر که توی ایران شهر های ثبت شده برای آی پی ها معمولا صحیح نیست.

ثانیا شرکت هایی مثل پارس آنلاین و شاتل که توی کل کشور سرویس می دهند تمام آی پی هایشان را به نام تهران ثبت کرده اند.

ضمنا : برای بدست آوردن شهر چرا می خواهید از اینترنت استفاده کنید؟ شاید خیلی ها در آن لحظه اینترنت نداشته باشند.

راه کار شما فقط از طریق دریافت نقطه GPS است. که می توانید آن را با یک لیست از قبل ذخیره شده مقایسه کنید و نزدیک ترین نقطه را به یکی از شهر های لیست خود پیدا کنید.

نظرات

red_sky 11 سال پیش
ممنون از راهنمایی شما ولی برنامه قرار کلا با اینترنت کار کنه
محمد آقا 11 سال پیش

سلام دوست عزیز

 

ظاهرا شما برای اجرای این برنامه کمی نیاز به دانش شبکه دارید و خوشحال میشم بتونم با اطلاعات کمی که دارم کمکتون کنم :)

ببینید، در ابتدا بگم که برای سرچ اگر میخواهید آی پی جهانی رو بدست بیارید باید از واژه ی Public IP و برای اینکه بخواهید آی پی در شبکه ی محلی ( مثل همین وای فای ) رو بدست بیارید از کلمه ی کلیدی Private IP استفاده کنید ، دقت کنید که Valid IP و inValid IP کاملن واژه هایی اشتباه هستند که متاسفانه در ایران بکار برده میشن و باعث میشه سرچ شما نتایج مطلوبی دربر داشته باشه .

حالا میرسیم به سوال اصلی شما ،

در ایران و تمام جهان، در مراکزی به نام ISP که همه ی ما باهاش آشنایی داریم، پروتکل هایی نظیر NAT و PAT اجرا میشن، کار این پروتکل ها چیه حالا ؟ آی پی که ما داریم استفاده میکنیم IP v4 هست که محدود هست برای همین به تعداد زیادی از ساکنین ایران یدونه Public IP داده میشه و همین یدونه آی پی نماینده ی تعداد زیادی از مشترکین هست و با پروتکل های NAT و PAT در داخل شبکه محلی تفکیک میشه ، اینو برای چی گفتم ؟ برای اینکه سوال کردی آی پی ای که میگیرم درست نیست، دلیلش هم در واقع همینه ، بجز در موارد خاص به مشترکین IP Public داده نمیشه و هر سیستم یدونه IP Public نداره که به راحتی توسط شما قابل ردگیری باشه اما خب در مراکزی نظیر پلیس فتا از طریق mac adress سیستم ها سارقین رو ردیابی میکنن .

حالا سوال اصلی ، شما برای اجرای برنامه ات دقیقن به چه چیزی نیازی داری ؟ اینکه ببینی طرف از کدوم شهر وصل شده ؟ خب چرا برای این کار از GPS استفاده نمیکنی ؟

نظرات

red_sky 11 سال پیش
ممنون از راهنمایی هاتون من برای کسی دارم کار میکنم در واقع دارم بهش کمک میکنم و قراره توی این فاز تحقیقات کنم از من خواستن که مثل وایبر باید کاربر اول ثبت نام کنه و همون موقع ثبت نام باید ip کاربر را بدست بیاریم و اگه بشه از روی ip بفهمیم کاربر از کدام شهر وصل شده دقیقا چیزی که از من خواستن اینه و الان قراره من در این مورد تحقیق کنم و راه حل بدست بیارم من هم خیلی توی نت گشتم نوب سرویس های زیادی هم سر زدم و ا اونجا که مطالعه کردم فهمیدم که توی ایران تقریبا این کار شدنی نیست ولی همه جا گفته بودن میشه شهر را فهمید من هم چون فقط میخوام بدونم از کدام شهر وصل شه گفتم بپرسم از اهل فن شاید کسی بتونه کمک کنه به من تا اونحا هم که خودم توی وب سرویس های مختلف رفتم شهر را درست تشخیص ندادن
red_sky 11 سال پیش
اگه بشه مثل گوگل که با اینترنت مکانمون را تشخیص میداد این کار را بکنیم عالی میشه نمیدونم چطور میشه همچین کاری کرد
AhmadVB 11 سال پیش
اون قابلیت گوگل که از اینترنت می فهمه با استفاده از یک الگوریتم پیشرفته است و نکته اینکه باز همون هم گوگل به نوعی از GPS هایی که قبلا بدست آورده می فهمد کاربر کجاست که توضیحش اینجا نمی گنجد. ولی با استفاده از دسترسی بدست آوردن مکان تقریبی (یکی از دسترسی های اندروید است) می توانید همین اطلاعات را از خود گوشی بپرسید.
red_sky 11 سال پیش
ممنون میشه بیشتر توضیح بدین در مورد این موضوع

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .