آموزش به دست آوردن آیپی در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش به دست آوردن آیپی در برنامه نویسی اندروید می پردازیم با بررسی که انجام دادیم به طور معمول نمی شود آیپی اصلی کاربر را به دست آورد امروز با استفاده از یک وب سرویس آیپی را به دست میاریم که چندین مزیت دارد که در ادامه به آن ها می پردازیم با ما همراه باشید.
مزیت استفاده از وب سرویس
- به دست آوردن آیپی اصلی : در صورتی که کاربر از فیلترشکن هم استفاده کند ما می توانیم آیپی اصلی کاربر رو به دست بیاریم.
- دسترسی داشتن به کد php برای تغییر اعمالات
ابتدا یک فایل به نام getip.php در هاست خود ایجاد کنید
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?PHP function getUserIP() { $client = @$_SERVER['HTTP_CLIENT_IP']; $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; $remote = $_SERVER['REMOTE_ADDR']; if(filter_var($client, FILTER_VALIDATE_IP)) { $ip = $client; } elseif(filter_var($forward, FILTER_VALIDATE_IP)) { $ip = $forward; } else { $ip = $remote; } return $ip; } $user_ip = getUserIP(); echo $user_ip; ?> |
دوستانی که هاست ندارند می تواند از لینک زیر استفاده کنند.
1 | http://programchi.ir/getip.php |
در صورتی که به آدرس بالا بروید آیپی شما نمایش داده می شود.
برای اینکه آیپی رو به دست بیارید از کد زیر استفاده کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public static String getHtml(String url) throws IOException { URLConnection connection = (new URL(url)).openConnection(); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); connection.connect(); InputStream in = connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); StringBuilder html = new StringBuilder(); for (String line; (line = reader.readLine()) != null; ) { html.append(line); } in.close(); return html.toString(); } |
ورودی آن باید همان url ی باشد که در بالا قرار دادیم .
قبلش باید این کتاب خانه را اضافه کنید.
1 | compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2' |
در صورتی که خطا داشتید از کد زیر استفاده کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet("http://programchi.ir/getip.php"); HttpResponse response = client.execute(request); String html = ""; InputStream in = response.getEntity().getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); StringBuilder str = new StringBuilder(); String line = null; while((line = reader.readLine()) != null) { str.append(line); } in.close(); html = str.toString(); |
این آموزش هم به پایان رسید.
موفق و موید باشید.
سلام و تشکر بابت این آموزش.
ببخشید چطور میشه آی پی مربوط به GateWay رو در هنگام اتصال به شبکه موبایل به دست آورد؟
مقدار gateway، مثل آی پی خود موبایل هست. با این تفاوت که رقم آخرش فرق داره.
مثلا اگر آی پی خود دستگاه 100.80.25.137 هست، مقدار GateWay ، برابر با 100.80.25.136 هست.
حالا من آی پی خود دستگاه را میتونم به دست بیارم. اما گیت وی رو نمیتونم.
با تشکر فراوان.
برای اینکه آیپی GateWay رو بگرید کافی است مثل زیر عمل کنید
دسترسی های فراموش نشود.
موفق باشید.
شاید return هر کدام به درستی نباشد برای تبدیل آنها به عدد می توانید از void زیر استفاده کنید.
متشکرم از راهنماییتون.
این کد به درستی کار میکنه. اما من میخوام مقدار گیت وی مربوط به شبکه موبایل(یا دیتا) رو به دست بیارم.
مقادیر بالا مربوط به مودم خانگی هستند.
با سپاس.
کد زیر را تست کنید.
البته این کد در جاوا تست شده است شاید بعضی از متودها را شناخته نشود.
بله. متاسفانه این قسمت ها را نمیشناسد:
DEFAULT_GATEWAY
Desktop
getDesktop