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

Клиент-серверная архитектура на основе сокетов - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Маска ввода для EditText http://www.cyberforum.ru/android-dev/thread873723.html
Здравствуйте. А можно как то задать маску ввода для текстового поля? Ну например, вводим сумму денег в EditText и формат должен быть типа "#.00" - то есть после точки не больше двух цифр. И если...
Программирование Android Не пойму, почему вылазит OutOfBoundsException String line = "I:MY_MOTE #N:182 #TMP: 32.75 #TS:Friday, 13/00/10 - 44:12.15"; int index2 = line.indexOf("#TMP:"); String sub = line.substring(index2 + 5, 7) Выполняя тоже самое в C#, получаю... http://www.cyberforum.ru/android-dev/thread873585.html
База SqLite - проверка записей на существование Программирование Android
Помоги разрешить следующую ситуацию. у меня есть метод который получает данные из интернета в Json. Я данные разбираю и записываю в базу данных: try { for (int i = 0; i <...
Visualizer и сигнал с микрофона.Проблемка Программирование Android
Здравствуйте. Столкнулся с проблемой. Требуется написать приложение, которое будет отображать сигнал с микрофона в виде: - wave form; - fft form. Клас Vizualizer имеет методы getWaveForm() и...
Программирование Android Ориентация экрана http://www.cyberforum.ru/android-dev/thread872789.html
Здравствуйте!Хотелось бы услышать совета знающих людей:) Имеется Активити с открытой БД и Курсором...Необходимо сделать так, что бы при изменении ориентации экрана не вызывался метод onCreate(),...
Программирование Android Потоковое видео Есть видеопоток(RTP), зашифрован по h.263, который приходит на конкретный порт по UDP протоколу. Как можно воспроизвести этот видеопоток в своем приложении? подробнее

Показать сообщение отдельно
GiGaBiTe911
24 / 24 / 1
Регистрация: 04.02.2013
Сообщений: 132
Записей в блоге: 1
24.05.2013, 11:09
не совсем в вечном цикле, но вы почти угадали. нужно запустить отдельный поток и в нем слушать созданный сокет. примерно вот так:
Java
1
2
3
4
5
6
private void CreateThread()
{
        // создаем новый поток и в него передаем объект Runnable для обработки этого потока
    listenThread = new Thread(null, doBackgroundListening,"BackgroundListen");                                                                                                          
    listenThread.start();
}
объект Runnable для обработки
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private Runnable doBackgroundListening = new Runnable() 
{
    @Override
    public void run() 
    {
        if(Connect()) // здесь создаем сокет и подключаемся
        {               
            isSterted = true;       
            isRcvData= true;
            handler.post(doUpdateGUIonStartSucces); // для обновления UI из этого потока
            backgroundListening();  // собственно вызываем метод в котором создаем и слушаем сокет          
        }
        else
        {
            isSterted=false;
            handler.post(doUpdateGUIonStartError);
        }
    }
};
метод в котором создаем и слушаем сокет
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
private void backgroundListening()
    {                       
        try 
        {
            int len;
            inp = soc.getInputStream();
            Context context = getApplicationContext();
            incomData = new byte[0];
            boolean isReaded = false;           
            byteTransfered=0;
            soc.setReceiveBufferSize(Integer.MAX_VALUE);
            while(isRcvData)
            {                                                               
                byte bufin[] = new byte[1];                                                                                             
                                
                while((len=inp.read(bufin)) !=-1)               
                {                                                                                                   
                    // здесь читаем данные из буфера                                                    
                }                               
            }
        } 
        catch (IOException e) 
        {           
            Log.e("IO ERROR:", e.getMessage() );        
        }
        catch (Exception ex) 
        {                   
            Log.e("IO ERROR 2:", ex.getMessage() );         
        }       
        
    }
метод в котором создаем сокет и подключаемся
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
private boolean Connect()
    {
        boolean isConnected = false;
        try
        {                                                   
            soc = new Socket();
            soc.bind(null);
            
            soc.connect(new InetSocketAddress(m_host, m_port),5000);            
            soc.setKeepAlive(true);                     
            isConnected = true;                         
            
        }
        catch(NumberFormatException ex)
        {           
            Log.e("CONNECT ERROR - NumForm",ex.getMessage());       
        }
        catch(SocketTimeoutException ex)
        {
            Log.e("CONNECT ERROR - SockTimeOut",ex.getMessage());
        }
        catch(Exception ex)
        {           
            Log.e("CONNECT ERROR - Uncnown",ex.getMessage());
        }       
        
        return isConnected;
    }
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru