Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
9 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 88
1

Клиент падает при запуске

13.06.2016, 08:40. Показов 693. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день подскажите пожалуйста, где может быть ошибка. Не как не получается запустить данный код на Android при нажатие кнопки "отправить" программа падает. Но если запустить данный код в eclipse всё отлично работает.


Вызов клиента в MainActivity

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class MainActivity extends Activity {
 
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        createDirectory();
      
 
    }
 public void onClickSend(View view) throws FileNotFoundException {
 
Networking net = new Networking();
        net.execute();
}
 
}


Класс клиента


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
public class Networking extends AsyncTask<Void,Void,Void> {
 
 
    static private ServerSocket server;//принимает соединение от Socket connection
    static private Socket client;//создаёт соединение ServerSocket 
 
    /*****************STREAM*****************/
    static private BufferedOutputStream output;
    static private BufferedInputStream input;
    /***************************************/
 
 
 
 
    @Override
    protected Void doInBackground(Void... params) {
 
// TODO Auto-generated method stub
        byte[] byteArray = new byte[8192];
        int in;
 
        try {
 
            client = new Socket("192.168.56.1", 60000);
            input = new BufferedInputStream(new FileInputStream("/storage/emulated/0/Pictures/Photo_and_Video/i.jpg"));
            output = new BufferedOutputStream(client.getOutputStream());
 
            while ((in = input.read(byteArray)) != -1){
                output.write(byteArray,0,in);
 
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
 
        try {
            input.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            output.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
 
        return null;
    }
 
 
 
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2016, 08:40
Ответы с готовыми решениями:

Клиент не соединяется с сервером при запуске из Android Studio
Доброго времени суток, форумчане. Целые сутки убил на решение вопроса, ответа так и не нашел, решил...

Падает приложение при чтении txt
при вызове метода public String fileToString() из MainActivity приложении падает. А если...

Падает приложение при чтении настроек
Вот фрагмент моего кода: public void butCalculationElectric_Click(View v){ float...

Приложение падает при включении блютуз
Здравствуйте. Я первый раз работаю с блютуз в андроид. Запустил приложение, а при нажатии кнопки,...

17
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
13.06.2016, 09:53 2
разрешение в манифесте есть?
XML
1
    <uses-permission android:name="android.permission.INTERNET" />
если есть - весь лог ошибки надо показывать
0
9 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 88
13.06.2016, 10:50  [ТС] 3
Да есть.
Про лог забыл )
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
06-13 10:48:53.242 16334-16492/centre_v01 E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
                                                                             Process: centre, PID: 16334
                                                                             java.lang.RuntimeException: An error occured while executing doInBackground()
                                                                                 at android.os.AsyncTask$3.done(AsyncTask.java:300)
                                                                                 at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
                                                                                 at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
                                                                                 at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                                                                                 at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
                                                                                 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                                                                                 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                                                                                 at java.lang.Thread.run(Thread.java:841)
                                                                              Caused by: java.lang.NullPointerException
                                                                                 at .centre.Networking.doInBackground(Networking.java:70)
                                                                                 at centre.Networking.doInBackground(Networking.java:19)
                                                                                 at android.os.AsyncTask$2.call(AsyncTask.java:288)
                                                                                 at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                                 at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)*
                                                                                 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)*
                                                                                 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)*
                                                                                 at java.lang.Thread.run(Thread.java:841)*
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
13.06.2016, 11:00 4
192.168.56.1 это адрес чего?
0
9 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 88
13.06.2016, 11:07  [ТС] 5
Удалённого сервера.
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
13.06.2016, 11:19 6
там порт открыт?
проверить телнетом, будет работать?
0
9 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 88
13.06.2016, 11:27  [ТС] 7
Да открыт, я проверял это код в eclipse всё приходит но вот Android работать не хочет.
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
13.06.2016, 11:37 8
я бы проверял не на эмуляторе, а на реальном устройстве, потому что у эмулятора адрес вообще из другой подсети

+ по логу непонятно какая именно строка выдает NullPointerException
0
9 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 88
13.06.2016, 11:49  [ТС] 9
Эта проблема при работе реального устройства

на сколько я понимаю ругается он на эти строки
Java
1
2
at .centre.Networking.doInBackground(Networking.java:70)
at centre.Networking.doInBackground(Networking.java:19)
В коде они соответствуют
Java
1
2
3
4
public class Networking extends AsyncTask<Void,Void,Void> //19
 
 
 input.close();//70
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
13.06.2016, 12:00 10
а какая версия андроида на устройстве, не 6.х ?

если ругается на input.close() значит надо проверить разрешение в манифесте на доступ в карте памяти
XML
1
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
если оно есть и версия андроида ниже 6 то надо проверять точно ли оно понимает такой путь "/storage/emulated/0/Pictures/Photo_and_Video/i.jpg"
0
9 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 88
13.06.2016, 12:08  [ТС] 11
Версия 4.4 , разрешение есть, да на адрес я тоже думал, но как его правильно прописать ?
/storage/emulated/0/Pictures/Photo_and_Video/i.jpg где может быть ошибка в нём я его копировал с самого устройства ?
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
13.06.2016, 13:13 12
а этот файл там есть точно?
в логе только эта ошибка, других нет?
0
9 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 88
14.06.2016, 10:12  [ТС] 13
Добавлено через 20 часов 23 минуты
Задача решена, всё дело было в параметре

Java
1
protected Void doInBackground(Void... params)
Сменил его и заработало

Java
1
protected Void doInBackground(Void... arg0)
0
129 / 126 / 22
Регистрация: 23.06.2009
Сообщений: 700
14.06.2016, 12:02 14
Цитата Сообщение от Terabaytus Посмотреть сообщение
Сменил его и заработало
это никак не влияет на ошибку.
0
9 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 88
17.06.2016, 10:33  [ТС] 15
petruchodd, да походу никак приложение опять падает подскажите пожалуйста в чем может быть причина

Код клиента

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
public class MainActivity extends Activity {
 
 
static private ServerSocket server;//принимает соединение от Socket connection
    static private Socket client;//создаёт соединение ServerSocket так же может соедениться с channel socket
 
    /*****************STREAM*****************/
    static private BufferedOutputStream output;
    static private BufferedInputStream input;
    /***************************************/
 
 
 
 
 /**********************************ЗАГРУЗЧИК**********************************/
    public void onClickSend(View view) throws FileNotFoundException {
 
        Networking net =new Networking();
        net.execute();
 
    }
 
 
 
public class Networking extends AsyncTask<Void,Integer,Void> {
 
 
 
        ProgressBar progressBar;
 
 
 
 
 
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
 
            progressBar = (ProgressBar) findViewById(R.id.progressBar);
            progressBar.setVisibility(ProgressBar.INVISIBLE);
            progressBar.setVisibility(ProgressBar.VISIBLE);// запускаем длительную операцию
 
                Toast toast = Toast.makeText(getApplicationContext(),//создаем и отображаем текстовое уведомление "Загрузка"
                        R.string.message,
                        Toast.LENGTH_LONG);
                toast.setGravity(Gravity.CENTER, 0, 0);
                toast.show();
 
 
        }
 
 
 
 
        @Override
        protected Void doInBackground(Void... arg0) {
 
// TODO Auto-generated method stub
            byte[] byteArray = new byte[8192];
            int in;
 
            try {
 
                client = new Socket("192.168.1.138", 60000);
                input = new BufferedInputStream(new FileInputStream("/storage/emulated/0/Pictures/Photo_and_Video/i.jpg"));
                output = new BufferedOutputStream(client.getOutputStream());
 
                while ((in = input.read(byteArray)) != -1){
                    output.write(byteArray,0,in);
 
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                Log.d(TAG, "Message", e);
            }
 
            try {
                input.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                Log.d(TAG, "Message", e);
            }
            try {
                output.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
 
            return null;
        }
 
        protected void onPostExecute(Void result) {
           super.onPostExecute(result);
 
            progressBar.setVisibility(ProgressBar.INVISIBLE);
            
            Toast toast = Toast.makeText(getApplicationContext(),//создаем и отображаем текстовое уведомление
                    R.string.message1,
                    Toast.LENGTH_LONG);
            toast.setGravity(Gravity.CENTER, 0, 0);
            toast.show();
 
 
        }
 
    }
 
}


Лог ошибки


в строке 201 находиться input.close();
в строке 148 находиться public class Networking extends AsyncTask<Void,Integer,Void>



Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
06-17 10:00:13.488 30973-31069/ru.centre_v01 E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
 Process: ru.centre_v01, PID: 30973
 java.lang.RuntimeException: An error occured while executing doInBackground()
 at android.os.AsyncTask$3.done(AsyncTask.java:300)
 at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
 at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
 at java.util.concurrent.FutureTask.run(FutureTask.java:242)
 at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                           at java.lang.Thread.run(Thread.java:841)
                           Caused by: java.lang.NullPointerException
at ru.centre_v01.MainActivity$Networking.doInBackground(MainActivity.java:201)
at ru.centre_v01.MainActivity$Networking.doInBackground(MainActivity.java:148)
                           at android.os.AsyncTask$2.call(AsyncTask.java:288)
                           at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                           at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
                         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
                        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
                         at java.lang.Thread.run(Thread.java:841)
0
129 / 126 / 22
Регистрация: 23.06.2009
Сообщений: 700
17.06.2016, 11:43 16
проверь логом
Java
1
2
 input = new BufferedInputStream(new FileInputStream("/storage/emulated/0/Pictures/Photo_and_Video/i.jpg"));
          Log.e("test", "input = "+input);
возможно input сходу идет как null.
0
66 / 56 / 6
Регистрация: 28.12.2011
Сообщений: 322
17.06.2016, 11:47 17
Вы и сами можете определить в чем причина.
Цитата Сообщение от Terabaytus Посмотреть сообщение
Caused by: java.lang.NullPointerException
В месте где возникает исключение тормозните выполнение приложение в debug режиме и посмотрите что там именно null.
Если вы говорите, что падает на этой строке
Java
1
input.close();
, значит input null.
1
9 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 88
17.06.2016, 13:35  [ТС] 18
petruchodd, Hank, спасибо всё заработало дело было в порте.
0
17.06.2016, 13:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.06.2016, 13:35
Помогаю со студенческими работами здесь

Падает скорость объектов на экране при нажатии
Привет. У меня возникла проблема. Создал маленькую игру, На экране двигаются несколько объектов, а...

Программа падает при запуске
при запуске turbo pascal вылетает =(. program a1; uses crt; const WG=30; type tmatr=array...

Падает Excel при запуске макроса
Доброго времени суток, уважаемые гуру. Застрял на одном проекте. Пишу прогу на работу для себя. Всё...

Программа падает при запуске OpenFileDialog на Raspbian
Собственно проблема описана в заголовке. При попытке запустить диалог, он сначала вроде как...


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

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