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

Не приходит сообщение от сервера - Android

Войти
Регистрация
Восстановить пароль
 
Вячеслав_1988
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 21
25.11.2015, 16:38     Не приходит сообщение от сервера #1
Здравствуйте! Ситуация такова: при отправке сообщения от клиента серверу все в порядке - сообщение приходит и отображается, однако, когда добавляю в код
Java
1
2
3
dataInputStream = new DataInputStream (client.getInputStream());
                    msg1 = dataInputStream.readUTF();
                    tvRes.setText(msg1);
при отправке сообщений клиенту от сервера и серверу от клиента, они отправляются, но не отображаются.

Клиент(код, с которым перестает работать выделил, как комментарии):
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
package com.example.client_1;
 
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
 
public class MainActivity extends Activity {
    
    TextView tvCon;// tvRes;
    Button btnCon;
    Socket client = null;
    int cPort = 6574;
    String  msg1;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        btnCon = (Button)findViewById(R.id.btnCon);
        //tvRes = (TextView)findViewById(R.id.tvRes);
        tvCon = (TextView)findViewById(R.id.tvCon);
        tvCon.setText("Cotrol Connect to Port:" + cPort);
        
        OnClickListener oclBtn = new OnClickListener(){
 
            @Override
            public void onClick(View v) {
                
                Thread t = new Thread (new Runnable(){
                    public void run(){
                        DataOutputStream dataOutputStream = null;
                        //DataInputStream dataInputStream = null;
                try 
                {
                    client = new Socket ("10.0.2.2", cPort);
                    dataOutputStream = new DataOutputStream (client.getOutputStream());
                    dataOutputStream.writeBytes("123 Android !@#$%^&*()_+");
                    //dataInputStream = new DataInputStream (client.getInputStream());
                    //msg1 = dataInputStream.readUTF();
                    //tvRes.setText(msg1);
 
                }
                catch (UnknownHostException e)
                {
                    tvCon.append('\n' + "Error" + e.getMessage());
                    e.printStackTrace();
                }
                catch (IOException e)
                {
                    tvCon.append('\n' + "Error" + e.getMessage());
                    e.printStackTrace();
                }
                    }
                });
                t.start();
            }
            
        };
        btnCon.setOnClickListener(oclBtn);
        
    }
 
    }
Сервер на VB6 (это условие задания - именно VB6):
Visual Basic
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
Private Sub cmdSendData_Click()
'Отправляем данные
Winsock1.SendData txtSendData.Text
'Записываем в лог чата
txtOutput.Text = txtOutput.Text & vbNewLine & "Сервер: " & txtSendData.Text
'Стираем текст
txtSendData.Text = ""
'передаем фокус ввода текстовому полю
txtSendData.SetFocus
End Sub
 
Private Sub Form_Load()
'Блокируем лог чата от ввода
txtOutput.Locked = True
'Устанавливаем размеры элементов
txtOutput.Move 0, 0, Me.Width, Me.Height * 0.6
txtSendData.Move 0, txtOutput.Height + 10, Me.Width
cmdSendData.Move 0, txtSendData.Top + txtSendData.Height, Me.Width
'Устанавливаем другие свойства
txtOutput.Text = ""
txtSendData.Text = "Введите сюда текст, чтобы отправить"
cmdSendData.Caption = "Отправить"
'Устанавливаем порт для прослушивания
Winsock1.LocalPort = 6574
'Начинаем прослушивать
Winsock1.Listen
End Sub
 
Private Sub txtSendData_KeyPress(KeyAscii As Integer)
'Если нажат Enter - отправляем данные
If KeyAscii = 13 Then cmdSendData_Click
End Sub
 
Private Sub Winsock1_Close()
'Закрываем соединение, если оно еще не закрыто
If Winsock1.State <> sckClosed Then Winsock1.Close
'Начинаем прослушивать еще раз
Winsock1.Listen
End Sub
 
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
'Останавливаем прослушивание
'(Обязательно!)
Winsock1.Close
 
'Подключаем клиента
Winsock1.Accept requestID
 
'Очищаем лог разговора
txtOutput.Text = "ЕСТЬ ПОДКЛЮЮЧЕНИЕ!!!"
End Sub
 
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim s As String
'Принимаем все данные
Winsock1.GetData s, vbString
 
'Записываем данные в лог разговора
txtOutput.Text = txtOutput.Text & vbNewLine & "Клиент: " & s
 
'Перемещаем курсор в конец лога
txtOutput.SelStart = txtOutput.SelLength
 
End Sub
 
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
 
MsgBox Description, vbCritical
Winsock1_Close
End Sub
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2015, 16:38     Не приходит сообщение от сервера
Посмотрите здесь:

Загрузка файла с сервера Android
Получение JSON с сервера Android
Android Реализация клиент сервера
Не приходит UDP сообщение Android
Android Скачивание документа с сервера
Не приходит ответ при HttpPost Android
Намерение от action ".BATTERY_LOW" приходит с задержкой Android
Android JSOUP POST. В ответ вместо JSon приходит разметка страницы с полями для ввода данных
Попытка принять сообщение с сервера Android
Получение текста с сервера Android
Android Дождаться ответа от сервера
Android Server->Client Обновление БД длинной строкой. Приходит не все отосланное

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
27.11.2015, 15:04     Не приходит сообщение от сервера #2
Мб кодировка?
Java
1
 msg1 = dataInputStream.readUTF();
Вячеслав_1988
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 21
27.11.2015, 15:46  [ТС]     Не приходит сообщение от сервера #3
может и кодировка, т.к. есть проблема в чтении UTF сервером на VB, туда я отправляю в Byte все, читает правда, только числа, символы и латинские буквы, кириллицу никак.
Не ясно, что в таком случае делать
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
27.11.2015, 16:07     Не приходит сообщение от сервера #4
Я бы сделал так, поставил бы Wireshark или подобные сетевые программы на комп с сервером и посмотрел бы что принимает и передает сервер, с Wiresharkom всегда прокатывает, основная мысль в том ,чтобы прослушать сеть и понять, что отваливается конкретно
Вячеслав_1988
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 21
28.12.2015, 00:22  [ТС]     Не приходит сообщение от сервера #5
Вернулся к той же проблеме, сервер сообщения отправляет 100%, т.к. написанный специально клиент на VB под него сообщения получает и отображает, а с клиентом под Андроид та же беда, код теперь такой:
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package com.example.client_v2;
 
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
 
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
 
public class MainActivity extends Activity {
 
    private static final String TAG = "test.socket.app";
 
    public String URL = "10.0.2.2";
    public int PORT = 6574;
    private Button button;
    private Button connect;
    private TextView textView;
    private EditText editText;
   // private boolean connected = false;
    private Socket socket;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        button = (Button) findViewById(R.id.button);
        connect = (Button) findViewById(R.id.button2);
        textView = (TextView) findViewById(R.id.textView);
        editText = (EditText) findViewById(R.id.editText);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new SendMessage().execute(editText.getText().toString());
            }
        });
        connect.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new ConnectSocket().execute();
            }
        });
    }
 
    class ConnectSocket extends AsyncTask<Void, String, String> {
 
        @Override
        protected String doInBackground(Void... params) {
            try {
                socket = new Socket(URL, PORT);
                if(socket.isConnected()) {
                    Log.e(TAG, "connected");
                    return "connected";
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
 
        @Override
        protected void onPostExecute(String result) {
            if(result.equals("connected")) {
                connect.setVisibility(View.GONE);
            }
            super.onPostExecute(result);
        }
    }
 
    class SendMessage extends AsyncTask<String, String, String> {
 
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }
 
        @Override
        protected String doInBackground(String... params) {
            String st = null;
            //String date = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date());
           // connected = true;
//            while(connected) {
 
 
                try {
                    PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "windows-1251")), true);
                    out.println(" { " + params[0] + " }");
                    InputStreamReader streamReader = new InputStreamReader(socket.getInputStream(), "windows-1251");
                    BufferedReader reader = new BufferedReader(streamReader);
                    st = reader.readLine();
 
                    //Log.e(TAG, st);
                    
                    //DataInputStream dataInputStream = null;
                    //dataInputStream = new DataInputStream (socket.getInputStream());
                    //st = dataInputStream.readUTF();
                    
                } catch (Exception e) {
                    Log.e(TAG, "Error ", e);
                }
//            }
            return st;
        }
 
        @Override
        protected void onPostExecute(String result) {
            textView.setText(result);
            super.onPostExecute(result);
        }
    }
 
    @Override
    public void onStop() {
        try {
            if(socket != null) {
                socket.close();
                Log.e(TAG, "disconnected");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        super.onStop();
    }
}
Yandex
Объявления
28.12.2015, 00:22     Не приходит сообщение от сервера
Ответ Создать тему
Опции темы

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