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

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

Войти
Регистрация
Восстановить пароль
 
Вячеслав_1988
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 21
#1

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

25.11.2015, 16:38. Просмотров 313. Ответов 4
Метки нет (Все метки)

Здравствуйте! Ситуация такова: при отправке сообщения от клиента серверу все в порядке - сообщение приходит и отображается, однако, когда добавляю в код
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
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2015, 16:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не приходит сообщение от сервера (Программирование Android):

Не приходит UDP сообщение - Программирование Android
Здравствуйте. В моем приложении потребовалась широковещательная отправка сообщений. Сообщения вроде как отправляются, но приложение...

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

Не приходит ответ от сервера - PHP
Всем привет! Довелось мне написать клиентскую часть для работы с сервером и так уж вышло, что мне не приходит ответ на элементарный...

XMLHttpRequest: не приходит ответ от сервера - JavaScript
Всем привет! В теле страницы имею это: &lt;input type=&quot;text&quot; id=&quot;name&quot; name=&quot;login&quot; onblur=&quot;checklogin()&quot; onfocus=&quot;cancellogin()&quot;...

Не приходит ответ с сервера при POST-запросе - Java Сети
Здравствуйте. Пытаюсь через Java отправить POST-запрос на сервер (обычную символьную строку типа &quot;token: ygKhigLI3fGR4hL&quot;). Вот...

От сервера приходит код javascript как запустить? - JavaScript
От сервера приходит код типа &quot; $(&quot;#menu td&quot;).mouseout(function(){ $(&quot;.drawer table&quot;).hide();}); &quot; ну или любой другой простейший код. Как...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
REALIST07
Автор FAQ
Автор FAQ
176 / 176 / 13
Регистрация: 11.06.2010
Сообщений: 932
27.11.2015, 15:04 #2
Мб кодировка?
Java
1
 msg1 = dataInputStream.readUTF();
0
Вячеслав_1988
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 21
27.11.2015, 15:46  [ТС] #3
может и кодировка, т.к. есть проблема в чтении UTF сервером на VB, туда я отправляю в Byte все, читает правда, только числа, символы и латинские буквы, кириллицу никак.
Не ясно, что в таком случае делать
0
REALIST07
Автор FAQ
Автор FAQ
176 / 176 / 13
Регистрация: 11.06.2010
Сообщений: 932
27.11.2015, 16:07 #4
Я бы сделал так, поставил бы Wireshark или подобные сетевые программы на комп с сервером и посмотрел бы что принимает и передает сервер, с Wiresharkom всегда прокатывает, основная мысль в том ,чтобы прослушать сеть и понять, что отваливается конкретно
1
Вячеслав_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();
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2015, 00:22
Привет! Вот еще темы с ответами:

POST запрос: иногда приходит пустой ответ от сервера - C#
Отсылаю POST запрос(HttpWebRequest) , использую прокси(запрос на pw.mail.ru) и очень часто ответ пустой. С чем связано - не пойму. ...

HttpWebRequest: ответ с сервера приходит в виде длинной рандомной строки - C#
Пишу клиент для браузерной онлайн игры. При отправке / принятии запросов столкнулся с проблемой. Суть очень проста: я формирую обычей...

Почта, организованная посредством php и локального сервера(endels) не приходит адресату - PHP
возможно ли посредством php и локального сервера(endels) отправить почту? код ниже ошибок не выдает, $mailsend возвращает true, но...

Не приходит сообщение [TCP] - C#
Всем привет! Скажите скажите в чём я ошибся, почему у меня на Android (TCPClient) не приходят сообщения от компьютера (TCPServer)? Уже...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.12.2015, 00:22
Ответ Создать тему
Опции темы

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