بدست آوردن ip کاربر در اولین اجرای برنامه
سلام
من میخوام وقتی که کاربر برای اولین بار برنامه را روی گوشی اجرا میکنه ip ش را بدست بیارم تا یکسری پردازش روی ip انجام بدم میشه راهنمایی کنید که چطور این ip را میشه بدست آورد؟
خدمت شما.تست کنید و نتیجه رو اعلام کنید :
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE); String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
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" />
با استفاده از php تونستم ipکاربر را بگیرم
کاربر در حین ورود به وب سرویس متصل میشه و ipش مشخص میشه
ممنون از همه
البته نمیدونم این کار درست هست یا نه و نمیدونم با کدنویسی اندروید بدون استفاده از وب سرویس میشه این کار را انجام داد یا نه ولی از همه گی بابت پاسخ هاتون ممنونم
حالا یک سوال دیگه هم دارم اینکه میدونید چطور میشه تشخیص داد کاربر در کدام شهر ایران هست ؟
وب سرویس های زیادی سر زدم ولی هیچ کدومشون شهر ip من را درست تشخیص ندادن
یا راهی هست که با کد نویسی خودمون بتونیم یک وب سرویس مخصوص ipهای ایرانی بنویسیم که شهرشون را درست تشخیص بده؟
من فقط شهر را میخوام نه آدرس همین که شهرشون را تشخیص بده کافیه
شما نمی توانید از روی آی پی شهر مشترک را تشخیص دهید.
اولا به این خاطر که توی ایران شهر های ثبت شده برای آی پی ها معمولا صحیح نیست.
ثانیا شرکت هایی مثل پارس آنلاین و شاتل که توی کل کشور سرویس می دهند تمام آی پی هایشان را به نام تهران ثبت کرده اند.
ضمنا : برای بدست آوردن شهر چرا می خواهید از اینترنت استفاده کنید؟ شاید خیلی ها در آن لحظه اینترنت نداشته باشند.
راه کار شما فقط از طریق دریافت نقطه GPS است. که می توانید آن را با یک لیست از قبل ذخیره شده مقایسه کنید و نزدیک ترین نقطه را به یکی از شهر های لیست خود پیدا کنید.
سلام دوست عزیز
ظاهرا شما برای اجرای این برنامه کمی نیاز به دانش شبکه دارید و خوشحال میشم بتونم با اطلاعات کمی که دارم کمکتون کنم :)
ببینید، در ابتدا بگم که برای سرچ اگر میخواهید آی پی جهانی رو بدست بیارید باید از واژه ی Public IP و برای اینکه بخواهید آی پی در شبکه ی محلی ( مثل همین وای فای ) رو بدست بیارید از کلمه ی کلیدی Private IP استفاده کنید ، دقت کنید که Valid IP و inValid IP کاملن واژه هایی اشتباه هستند که متاسفانه در ایران بکار برده میشن و باعث میشه سرچ شما نتایج مطلوبی دربر داشته باشه .
حالا میرسیم به سوال اصلی شما ،
در ایران و تمام جهان، در مراکزی به نام ISP که همه ی ما باهاش آشنایی داریم، پروتکل هایی نظیر NAT و PAT اجرا میشن، کار این پروتکل ها چیه حالا ؟ آی پی که ما داریم استفاده میکنیم IP v4 هست که محدود هست برای همین به تعداد زیادی از ساکنین ایران یدونه Public IP داده میشه و همین یدونه آی پی نماینده ی تعداد زیادی از مشترکین هست و با پروتکل های NAT و PAT در داخل شبکه محلی تفکیک میشه ، اینو برای چی گفتم ؟ برای اینکه سوال کردی آی پی ای که میگیرم درست نیست، دلیلش هم در واقع همینه ، بجز در موارد خاص به مشترکین IP Public داده نمیشه و هر سیستم یدونه IP Public نداره که به راحتی توسط شما قابل ردگیری باشه اما خب در مراکزی نظیر پلیس فتا از طریق mac adress سیستم ها سارقین رو ردیابی میکنن .
حالا سوال اصلی ، شما برای اجرای برنامه ات دقیقن به چه چیزی نیازی داری ؟ اینکه ببینی طرف از کدوم شهر وصل شده ؟ خب چرا برای این کار از GPS استفاده نمیکنی ؟
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .