Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Drago56
0 / 0 / 0
Регистрация: 17.04.2011
Сообщений: 37
#1

WiFi, создание сокета в новом потоке - Программирование Android

07.06.2016, 16:40. Просмотров 135. Ответов 0
Метки нет (Все метки)

Подскажите ошибку. Есть точка вай фая уже подключенная к андроиду. Пытаюь создать сокет в новом потоке MyThred2 IP:192.168.2.2 Порт:1234
Код создание сокета и запуск потока:
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
   Socket client = null;
                           // int r = 0;
                            try {
                                //client = new Socket(java.net.InetAddress.getByName("192.168.2.2"), 1234);
                                client = new Socket();
                                client.bind(null);
 
                                client.connect(new InetSocketAddress("192.168.2.2", 1234),1234);
                                client.setKeepAlive(true);
                            } catch (UnknownHostException e) {
                                Log.d(TAG, "соед1"  );
                            } catch (IOException e) {
                                Log.d(TAG, "соед2"  );
                            }
                            catch (NetworkOnMainThreadException e) {
                                Log.d(TAG, "соед3"  );
                            }
                            if (client !=null)
                              // Log.d(TAG, "соед"  );
                                tt.setText("ok");
                            else     tt.setText("no");
 
                    try {
                        outStream = client.getOutputStream();
                    } catch (IOException e) {
                        // errorExit("Fatal Error", "In onResume() and output stream creation failed:" + e.getMessage() + ".");
                        tt.setText("Ошибка..Не подключено");
                    }
                    MyThred2 = new ConnectedThred2(client);
                    MyThred2.start();
Код потока:
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
    private class ConnectedThred2 extends Thread {
        private final Socket copySocket;
        private final OutputStream OutStrem;
        private final InputStream InStrem;
 
        public ConnectedThred2(Socket socket) {
            copySocket = socket;
            OutputStream tmpOut = null;
            InputStream tmpIn = null;
            try {
                tmpOut = socket.getOutputStream();
                tmpIn = socket.getInputStream();
            } catch (IOException e) {
            }
 
            OutStrem = tmpOut;
            InStrem = tmpIn;
        }
 
 
        public void run() {
            byte[] buffer = new byte[1024];
            int bytes;
 
            while (true) {
                try {
                    bytes = InStrem.read(buffer);
                    h.obtainMessage(RECIEVE_MESSAGE, bytes, -1, buffer).sendToTarget();
                    SystemClock.sleep(1000);
                } catch (IOException e) {
                    break;
                }
 
            }
 
        }
 
        public void sendData(String message) {
            byte[] msgBuffer = message.getBytes();
            // Log.d(TAG, "***Отправляем данные: " + message + "***"  );
 
            try {
                OutStrem.write(msgBuffer);
            } catch (IOException e) {
            }
        }
 
        public void cancel() {
            try {
                copySocket.close();
                redButton1.setImageResource(R.drawable.otkl);
                redButton2.setImageResource(R.drawable.otkl);
                redButton3.setImageResource(R.drawable.otkl);
                redButton4.setImageResource(R.drawable.otkl);
            } catch (IOException e) {
            }
        }
 
        public Object status_OutStrem() {
            if (OutStrem == null) {
                return null;
            } else {
                return OutStrem;
            }
        }
    }
Код приема информации:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 h = new Handler() {
            public void handleMessage(Message msg) {
                // sbprint="";
                switch (msg.what) {
                    case RECIEVE_MESSAGE:
                        byte[] readBuf = (byte[]) msg.obj;
                        String strIncom = new String(readBuf, 0, msg.arg1);
                        Log.d(TAG,"strIncom="+strIncom);
                        sb.append(strIncom);                                                // формируем строку
                        int endOfLineIndex = sb.indexOf("\r\n");
                        Log.d(TAG,"endOfLineIndex="+Integer.toString(endOfLineIndex));// определяем символы конца строки
....................
................
.............
Ошибка:
06-07 18:41:54.604 14367-14456/com.example.my9 W/dalvikvm: threadid=12: thread exiting with uncaught exception (group=0x40dbe1f8)
06-07 18:41:54.604 14367-14456/com.example.my9 E/AndroidRuntime: FATAL EXCEPTION: Thread-5808
java.lang.NullPointerException
at com.example.my9.MainActivity$ConnectedThred2.run(MainActivity.java:1252)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2016, 16:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос WiFi, создание сокета в новом потоке (Программирование Android):

Handlers в новом потоке - Программирование Android
Почему не могу создать handlers в новом потоке ? Thread streamThread = new Thread(new Runnable() { public void run() { ...

ServerSocket в новом потоке - Программирование Android
По нажатию на кнопку запускаю новый поток. в Потоке открывается порт и ждет подключения: public void onClick(View view) { // TODO...

Работа с изображениями в новом потоке - Программирование Android
Доброго времени суток! У меня возникла проблемка с потоками, а собственно, не выходит работать с изображениями в новом потоке. На...

Post,Get запрос в новом потоке - Программирование Android
Как переписать код чтобы было возможным отправить запрос на android 4.0.3? Возникает ошибка, читал что это от того что в главном потоке...

Создание view элементов в отдельном потоке - Программирование Android
Беру данные из интернета и делаю блоки. Если информации довольно много то при запуске активности(где создаются эти блоки) сначала...

Прослушивание сокета в потоке - C++
Имеется 20+ потоков в каждом создается сокет для прослушивания. Код потока: void __fastcall TSocket::Execute() { ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2016, 16:40
Привет! Вот еще темы с ответами:

конструктор в новом потоке? - C++ Qt
Добрый день, народ. Не могу решить задачу с потоками, перепробовал миллион способов... Как сделать так, чтоб конструктор объекта...

MessageBox в новом потоке - C#
Нужен текст для создания messagebox в новом потоке. Хочу чтоб параллельно двигалась картинка і показалась MessageBox.

.NET 4.x Вызов методов в новом потоке - C# WPF
Например, вы создали простое приложение, которое работает в одном потоке и вас все устраивает. Но иногда в приложении вызывается звуковой...

Создать окна в новом потоке - C# WPF
Суть задачи - создать по клику кучу окон , чтобы они показывались АСИНХРОННО (!) private void Button_Click(object sender,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru