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

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

Войти
Регистрация
Восстановить пароль
 
Arion32
5 / 5 / 1
Регистрация: 17.10.2016
Сообщений: 161
#1

Чтение данных с сервера (TCP клиент) - Программирование Android

21.10.2016, 13:34. Просмотров 484. Ответов 11
Метки нет (Все метки)

Добрый день подскажите как реализовать чтение данных с сервера непрерывным потоком и выводить все в TextView.
отправку на сервер получилось сделать, все хорошо. А вот с приемом немогу понять.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   @Override
            public void onClick(View view) {
                switch (view.getId()) {
                    case R.id.buttonEnter:
                        try {
                           
                            String sendText = editTextLogin.getText().toString();
                            byte[] buf = sendText.getBytes("UTF-8");
                            dataToServerStream.write(buf, 0, buf.length);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        break;
                }
            }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2016, 13:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение данных с сервера (TCP клиент) (Программирование Android):

TCP/IP клиент - Программирование Android
Здравствуйте, Имеется хост, который слушает порт 50001, на андроиде написал такую функцию для отправки данных на хост. На хост...

TCP клиент - Программирование Android
Доброго времени суток. Мне стало нужно написать простое android-приложение, которое соединяется по беспроводной локальной сети с...

TCP клиент в NDK - Программирование Android
Как реализовать TCP клиент используя андроид ndk на С++?? Я слышал, что у андроид такое же ядро как и у Linux. То есть на андроид ndk будет...

TCP клиент под андроид - Программирование Android
Доброго времени суток. Имеется TCP сервер под Windows, написанный на Delphi XE5, также имеется программа под Android, написанная там же....

Пинг TCP сервера - Программирование Android
У меня есть TCP сервер под Windows и TCP клиент на андроид. Я устанавливаю между ними соединение и передаю данные. Но может же же быть...

Создаем TCP сервер (на основе сервера MicroBridge LightWeight) - Программирование Android
Добрый день, Уважаемые разработчики! Помогите пожалуйста, пытаюсь передать данные между ардуино и телефоном. С телефона отправляю...

11
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,606
21.10.2016, 18:21 #2
Arion32, мало кода где сама отправка?
0
Alexvp
108 / 72 / 8
Регистрация: 03.08.2014
Сообщений: 348
21.10.2016, 21:26 #3
Цитата Сообщение от Arion32 Посмотреть сообщение
чтение данных с сервера непрерывным потоком
Что под этим подразумевается? В любом случае данные с сервера будете получать порциями, например, содержание какого-нибудь файла или выборка из базы данных.
В своем приложении можете группировать получаемые данные и выводить удобным для вас способом.
0
Arion32
5 / 5 / 1
Регистрация: 17.10.2016
Сообщений: 161
21.10.2016, 21:37  [ТС] #4
Alexvp, vxg,
косяк. не то отправил.
Проблема в том что клиент не читает сообщения с сервера.

Что под этим подразумевается?
Получение порциями непрерывным потоком
помогите пожалуйста
сам код.

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
113
114
115
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
 
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.Socket;
import java.net.UnknownHostException;
 
 
public class MainActivity extends AppCompatActivity {
    Button buttonEnter;
    TextView textViewHeader;
    EditText editTextLogin;
    Socket client = null;
    DataOutputStream dataToServerStream = null;
    DataInputStream dataFromServerStream = null;
    String r = "";
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        buttonEnter = (Button) findViewById(R.id.buttonEnter);
        textViewHeader = (TextView) findViewById(R.id.textViewHeader);
        editTextLogin = (EditText) findViewById(R.id.editTextLogin);
 
        class ConnectToServer extends AsyncTask<Void, Void, Void> {
            @Override
            protected Void doInBackground(Void... voids) {
                //подключение к серверу
                try {
                    client = new Socket("192.168.187.218", 40512);
                    dataToServerStream = new DataOutputStream(client.getOutputStream());
                    dataFromServerStream = new DataInputStream(client.getInputStream());
                    Log.i("Socket", "Start");
 
 
                } catch (UnknownHostException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    System.out.println("Got an IOException: " + e.getMessage());
                }
                return null;
            }
        }
 
        ConnectToServer Connect = new ConnectToServer();
        Connect.execute();
 
 
        class GetDataFromServer extends AsyncTask<Void, Void, Void> {
 
            @Override
            public Void doInBackground(Void... voids) {
                //чтение данных с сервера
                while (true) {
 
                    try {
 
                        byte[] readBuffer = new byte[5 * 1024];
                        int read = 0;
                        read = dataFromServerStream.read(readBuffer);
                        if (read != -1) {
                            byte[] readData = new byte[read];
                            System.arraycopy(readBuffer, 0, readData, 0, read);
                            try {
                                r = new String(readData, "UTF-8");
                            } catch (UnsupportedEncodingException e) {
                            }
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    return null;
 
 
                }
            }
        }
        textViewHeader.setText(r);
        GetDataFromServer GetData = new GetDataFromServer();
        GetData.execute();
 
 
        //обработчик нажатий
        View.OnClickListener OnClickListener = new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                switch (view.getId()) {
                    case R.id.buttonEnter:
                        try {
                            //отправка данных на сервер
                            String sendText = editTextLogin.getText().toString();
                            byte[] buf = sendText.getBytes("UTF-8");
                            dataToServerStream.write(buf, 0, buf.length);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        break;
                }
            }
        };
 
        buttonEnter.setOnClickListener(OnClickListener);
    }
}
0
Alexvp
108 / 72 / 8
Регистрация: 03.08.2014
Сообщений: 348
21.10.2016, 22:07 #5
А сервер точно что-то отправляет?
0
Arion32
5 / 5 / 1
Регистрация: 17.10.2016
Сообщений: 161
21.10.2016, 22:30  [ТС] #6
да. в качестве сервера использую прогу hercules. Скачивал с гугл плей тср клиент - все работает. Может с выводом косяк какой то?
0
Alexvp
108 / 72 / 8
Регистрация: 03.08.2014
Сообщений: 348
21.10.2016, 22:31 #7
Принимаемую строку в дебаге посмотрите или сохраните в логах
0
Arion32
5 / 5 / 1
Регистрация: 17.10.2016
Сообщений: 161
21.10.2016, 23:27  [ТС] #8
попробовал вписать
Java
1
System.out.println(r);
после строки 76
Java
1
r = new String(readData, "UTF-8");
Сейчас во время отправки с сервера вижу сообщение в дебаге I/System.out: b.
b - это то что я отправлял с сервера. Но почему на экране планшета не выводится это? И повторная и последующая посылка сообщений не проходит больше.
Получается можно отправить только один раз и то это не выводится(
0
Arion32
5 / 5 / 1
Регистрация: 17.10.2016
Сообщений: 161
23.10.2016, 20:31  [ТС] #9
помогите кто может
0
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,606
24.10.2016, 10:26 #10
Arion32, ваш код выглядит как шедевр изворотливости - нельзя выполнять сетевой обмен в GUI? - ок, андроид, я разделю весь обмен на куски и вынесу эти куски в таски, а таски буду дергать когда мне нужно из GUI, я тебя обхитрю! и вот у нас одна таска подключается и выдирает потоки, другая читает из потока, а третья пишет в него... идея гениальная и поражающая мое воображение, но я бы на вашем месте сделал две вещи:
1 попробовал провернуть обмен (коннект, передача, прием) в одной таске что бы убедится в том что вы действительно все правильно делаете
2 попробовать обычные OutputStream и InputStream
0
Arion32
5 / 5 / 1
Регистрация: 17.10.2016
Сообщений: 161
24.10.2016, 12:56  [ТС] #11
vxg, как сделать проще?
0
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,606
24.10.2016, 18:01 #12
Arion32, как НАЧАТЬ делать я написал
0
24.10.2016, 18:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2016, 18:01
Привет! Вот еще темы с ответами:

Реализация клиент сервера - Программирование Android
Здравствуйте! Нашел все таки тему для своего дипломного проекта - система тестирования знаний с помощью мобильных приложений. Пока что вижу...

Android разработка клиент-сервера - Программирование Android
Всем привет! Встал вопрос создания клиент-сервера, но к сожалению об обращении клиента к серверу ничего не знаю. Неплохо знаю язык Java и...

Перенос кода клиент/сервера на Android - Программирование Android
Здравствуйте =) Начал изучать андроид и возникла такая проблема, а именно перенос Java кода в код приложения У меня есть работающий код...

Клиент на Android не получает данные с сервера - Программирование Android
Сервер на компе, написан на .Net, клиент на Android, ставится на устройство. Находясь в одной сети клиент подключается к серверу на .Net,...


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

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

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