10 / 10 / 2
Регистрация: 10.11.2013
Сообщений: 238
1

Проверить подключение к интернету, если выдернут шнур

28.08.2014, 21:05. Показов 2070. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
здравствуйте, как можно узнать, что есть подключение к интернету, если выдернут шнур из роутера? И еще: как исправить ошибку если при загрузке данных выключился интернет? Использую AsyncTask и HttpClient.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.08.2014, 21:05
Ответы с готовыми решениями:

Проверить, подключен ли интернет, если выдернут шнур из роутера
то есть в этом случае нужно отправить http запрос на сервер провайдера или как в этом случае...

Как проверить подключение к интернету?
Как проверить подключение к интернету? Чтобы , к примеру, вывести его в значение TRUE/FALSE???

Как проверить есть ли подключение к интернету?
???

Как проверить подключение к интернету + синронизировать время программы с интернетом
Всем привет, подскажите как проверить подключение к интернету + синронизировать время программы с...

15
4 / 4 / 0
Регистрация: 30.07.2013
Сообщений: 101
30.08.2014, 13:32 2
Похоже никто не может подсказать готового решения, я уже создавал похожую тему Проверка интернет соединения

Добавлено через 1 минуту
Я думаю необходима проверка интернет соединения сразу несколькими способами...
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
30.08.2014, 21:09 3
Ну проверьте стандартным способом, потом попробуйте послать запрос на сервер, если ответ не такой как ожидался - интернета нет. Для проверки ошибок при скачивании используйте хэш сумму файла, если не совпала - ошибка, загружайте заново.

Добавлено через 1 минуту
Если сервер не ваш, и хэши не выдает - придумайте что то еще)
0
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
31.08.2014, 01:10 4
а можете примерный код написать как послать на сервер запрос??

Добавлено через 50 секунд
и как проверять контрольную сумму?
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
31.08.2014, 01:44 5
Цитата Сообщение от yura91 Посмотреть сообщение
а можете примерный код написать как послать на сервер запрос??
В гугле много примеров.
Цитата Сообщение от yura91 Посмотреть сообщение
и как проверять контрольную сумму?
Генерируете на сервере, посылаете файл и строку с хэшем, получаете файл, генерируете сумму на телефоне, сверяете строки, если совпало - файл скачался полностью, если нет - недокачался. Примеры когда тоже есть в гугле.
0
4 / 4 / 0
Регистрация: 30.07.2013
Сообщений: 101
01.09.2014, 09:32 6
В следующем примере при включенном wi-fi и отсутствии инета, всё-равно вылазит стандартное окно, в остальных случаях работает...

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
 
public class NewsActivity extends Activity {
    
    WebView mWebViewNews;
    WebView mWebViewStock;
    WebView mWebViewPrice;
    
    String News = "<html><body>Нет интернет соединения. \n </body></html>";
    String Stock = "<html><body>Проверьте ваше интернет подключение </body></html>";
    String Price = "<html><body>Проверьте ваше интернет подключение </body></html>";
    
    boolean status;
    
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news);
         
        mWebViewNews = (WebView) findViewById (R.id.webViewNews);
        mWebViewStock = (WebView) findViewById (R.id.webViewStock);
        mWebViewPrice = (WebView) findViewById (R.id.webViewPrice);
        
        if ( isOnline()) { 
        // переходим по URL если доступен
            mWebViewNews.loadUrl("http://tpk-tek.ru/pda/index/news_mobile/0-21/");
            mWebViewStock.loadUrl("http://tpk-tek.ru/pda/index/stock_mobile/0-22");
            mWebViewPrice.loadUrl("http://tpk-tek.ru/pda/index/skachat_prajs/0-7"); 
        }
       else {
           
           
           status = isOnline();
 
        // решаем проблеммы с кодировкой
           WebSettings settingsNews = mWebViewNews.getSettings();
           settingsNews.setDefaultTextEncodingName("utf-8");
       // выводим текст если URL не доступен
       mWebViewNews.loadDataWithBaseURL(null, News, "text/html", "utf-8", null);
       
       WebSettings settingsStock = mWebViewStock.getSettings();
       settingsStock.setDefaultTextEncodingName("utf-8");
           mWebViewStock.loadDataWithBaseURL(null, Stock, "text/html", "utf-8", null);
           
           WebSettings settingsPrice = mWebViewPrice.getSettings();
           settingsPrice.setDefaultTextEncodingName("utf-8");
           mWebViewPrice.loadDataWithBaseURL(null, Price, "text/html", "utf-8", null);
           }
        
        
     
}
        
      boolean isOnline() {
            
            ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo nInfo = cm.getActiveNetworkInfo();
            if (nInfo != null && nInfo.isConnected()) {
                status = true;
                return true;
            }
            else {
                status = false;
                return false;
            }
            
            
        }
    
        
      
}
Последний раз редактировалось mcGurov; 10.06.2014 в 14:08.
mcGurov на форуме Сообщить модератору о нарушении   Быстрый ответ на это сообщение
Ответ Создать новую тему
Быстрый переход
 
 
 Быстрый ответ [Включить плавающее окно]
Добавлено через 1 минуту
А так отправляем запрос по url...
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import java.net.HttpURLConnection;
import java.net.URL;
 
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebSettings;
import android.webkit.WebView;
 
public class NewsActivity extends Activity {
    
    WebView mWebViewNews;
    WebView mWebViewStock;
    WebView mWebViewPrice;
    
    final static String TAG ="mylog";
    Thread t2, t3;
    int existInternet =0;
    
    String News = "<html><body>Нет интернет соединения. \n </body></html>";
    String Stock = "<html><body>Проверьте ваше интернет подключение </body></html>";
    String Price = "<html><body>Проверьте ваше интернет подключение </body></html>";
    
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news);
         
        mWebViewNews = (WebView) findViewById (R.id.webViewNews);
        mWebViewStock = (WebView) findViewById (R.id.webViewStock);
        mWebViewPrice = (WebView) findViewById (R.id.webViewPrice);
            
    Log.d(TAG, "---- start---------");             
    
    t2 = new Thread(new Runnable() {
                    public void run() {    
                                            checkConnectivity("http://tpk-tek.ru/pda/index/news_mobile/0-21/");                         
                    }
            });
   
    t3 = new Thread(new Runnable() {
                    public void run() {                                                  
                             try { 
                                     Thread.sleep(1000); // это 1 секунда,
                                     // нужно настроить для вашего соединения, сколько готовы ждать ответа
                                    if (t2.isAlive())  {
                                            //existInternet = 0; // интернета нет
                                            t2.interrupt();
                                            t2.stop();
                                    }                              
                                   
                                    
                                    Log.d(TAG, "---- internet: " + existInternet);
                            } catch (InterruptedException e) {                                     
                                    e.printStackTrace();                                   
                            }                                      
                    }
            });
   
            t2.start();            
            t3.start();
           
            try {
                    t3.join(); // ожидание завершения потока t3
            } catch (InterruptedException e) {
                    e.printStackTrace();
            }
            Log.d(TAG, "----Main internet: " + existInternet);
}
     
public void checkConnectivity(String url)  {
    try{  
            HttpURLConnection.setFollowRedirects(false);           
        HttpURLConnection conn = (HttpURLConnection)new URL(url).openConnection();          
       // conn.setRequestMethod("HEAD");
        conn.setRequestMethod("GET");
            if(conn.getResponseCode() == HttpURLConnection.HTTP_OK) {  
                            existInternet = 1; // интернет есть                        
            }
            
            
            
    }catch(Exception e) {
            Log.d(TAG, "error: " + e); // на ошибку можно не обращать внимание              
    }   
    
 
// отображение данных если URL доступен
if (existInternet == 1) mWebViewNews.loadUrl("http://tpk-tek.ru/pda/index/news_mobile/0-21/");
if (existInternet == 1) mWebViewStock.loadUrl("http://tpk-tek.ru/pda/index/stock_mobile/0-22");
if (existInternet == 1) mWebViewPrice.loadUrl("http://tpk-tek.ru/pda/index/skachat_prajs/0-7");
    
 
// решаем проблеммы с кодировкой
WebSettings settingsNews = mWebViewNews.getSettings();
settingsNews.setDefaultTextEncodingName("utf-8");
 
// отображение данных если URL недоступен
if (existInternet == 0) mWebViewNews.loadDataWithBaseURL(null, News, "text/html", "utf-8", null);
 
WebSettings settingsStock = mWebViewStock.getSettings();
settingsStock.setDefaultTextEncodingName("utf-8");
if (existInternet == 0) mWebViewStock.loadDataWithBaseURL(null, Stock, "text/html", "utf-8", null);
 
WebSettings settingsPrice = mWebViewPrice.getSettings();
settingsPrice.setDefaultTextEncodingName("utf-8");
if (existInternet == 0) mWebViewPrice.loadDataWithBaseURL(null, Price, "text/html", "utf-8", null);
    
 
}
}
0
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
01.09.2014, 20:06 7
можете дать ссылку на хороший пример??
0
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
02.09.2014, 01:21 8
два года использую такую функцию
Java
1
2
3
4
5
6
7
8
9
    public static boolean isConnected(Context context) {
        ConnectivityManager manager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (manager.getActiveNetworkInfo() != null) {
            return (manager.getActiveNetworkInfo().isAvailable() && manager
                    .getActiveNetworkInfo().isConnected());
        }
        return false;
    }
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
02.09.2014, 09:26 9
Цитата Сообщение от Netscape Посмотреть сообщение
два года использую такую функцию
Вернет true, если подключится через 3g, и иметь отрицательный баланс. Но на все запросы будет возвращать html страницу с информацией о счете. По крайней мере на мегафоне так. И думаю с публичным вайфаем(где нужна авторизация) такая же проблема будет. Если есть свой сервер лучше после этой проверки попробовать до него достучатся, либо до каких то сервисов которые время возвращают по запросу - там очень быстро приходит ответ и еще не разу не видел чтобы они падали.
0
10 / 10 / 2
Регистрация: 10.11.2013
Сообщений: 238
04.09.2014, 12:55  [ТС] 10
Spelcrawler, вот об этом я и говорил. Спасибо за развернутое сообщение. Никто не знает как решить эту проблему?
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
04.09.2014, 12:58 11
Я ведь описал выше способы. Если остались вопросы, поконкретнее задайте)
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
04.09.2014, 12:59 12
я бы пинговал гугловский dns, адреса:
8.8.8.8
8.8.4.4
у них доступность очень высокая
1
10 / 10 / 2
Регистрация: 10.11.2013
Сообщений: 238
04.09.2014, 13:09  [ТС] 13
Spelcrawler, можно поконкретнее с реализацией запроса к серверу? Имеется ввиду java-код запроса к серверу с таймером или что-то вроде этого. Запросы я делать умею, меня интересует куда нужно засунуть таймер.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class MyTask extends AsyncTask<Void, Void, String> {
 
HttpPost post_request;
String response_string;
        HttpClient httpclient;
        List<NameValuePair> nameValuePairs;
        HttpEntity responseEntity;
        HttpResponse response;
 
    @Override
    protected void onPreExecute() {
      super.onPreExecute();
      
    }
 
    @Override
    protected Void doInBackground(String... params) {
      try {
        post_request = new HttpPost("http://server.ru/internet.php");
                    nameValuePairs = new ArrayList<NameValuePair>(1);
                    nameValuePairs.add(new BasicNameValuePair("proverka", ""));
                    
 
                    post_request.setEntity(new UrlEncodedFormEntity(nameValuePairs));
 
                    response = httpclient.execute(post_request);
                    responseEntity = response.getEntity();
                    response_string = EntityUtils.toString(responseEntity, "UTF-8");
 
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
      return response_string;
    }
 
    @Override
    protected void onPostExecute(String result) {
      super.onPostExecute(result);
      
    }
  }
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
04.09.2014, 13:20 14
А зачем таймер?
0
10 / 10 / 2
Регистрация: 10.11.2013
Сообщений: 238
04.09.2014, 13:23  [ТС] 15
Я думал ждать определенное время и если не ответа сообщает об ошибке, а если нет, то загружать данные. А у вас есть другая идея?
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
04.09.2014, 13:35 16
Лучший ответ Сообщение было отмечено Muhammad97 как решение

Решение

Думаю это лишнее. Возможные варианты: интернета нет - стандартная проверка вернет false, интернет есть, но нет подключения (когда минус или что то такое) - вернет либо страницу о балансе либо от вай фая что-то, интернет есть и работает, но сервер не доступен - есть стандартный механизм на этот случай (исключение будет). Для того чтобы все это охватить достаточно стандартной проверки (есть выше) и запроса на любой сервер который всегда возвращает строку и всегда одну и ту же, проверить ответ, если совпал с той строкой которая должна быть - с интернетом все в порядке.
1
04.09.2014, 13:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.09.2014, 13:35
Помогаю со студенческими работами здесь

Необходимо ли подключение к интернету, если два компьютера соединены локально?
Если клиент и сервер TCP находятся в одной локальной сети или даже на одном компьютере то...

Подключение к интернету через блютус к интернету смартфона 5530
Здравствуйте! Ребята подскажите можно ли настроить доступ к интернету через блютус смартфона...

как подсоединить интернет на 2 ноутбука если 1 шнур???
у меня один шнур от интернета (он просто с подъезда идет) как сделать так что бы можно было сидеть...

Подключение к интернету
Столкнулся с такой проблемой.переехал жить в другой город,вчера взял у соседей пасс от wi fi он...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru