Асинктаск приемник UDP не получает - PullRequest
0 голосов
/ 14 мая 2019

Почему:

Я отправляю целевое местоположение в машину Raspberry Pi.Если местоположение отправлено правильно, пи отправляет ответ okey.

Проблема:

Приложение не может получить ответ okey.Я могу отправлять и получать пакеты с помощью raspberry pi, я проверил это.

Неполадки:

1) Нажмите кнопку, чтобы отправить некоторые данные в raspberry pi с телефона.

2) При нажатии этой кнопки запускаются 2 асинхронные задачи, 1-ая - приемник UDP с тайм-аутом 10 секунд.2-й - для отправки данных в raspberry pi.2-й работает должным образом.

Это слушатель кнопок.

btn_showCoordinates.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    GeoPoint markerPoint = new GeoPoint(Double.parseDouble(mapLat.getText().toString()), Double.parseDouble(mapLon.getText().toString()));
                    startMarker.setPosition(markerPoint);
                    startMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
                    startMarker.setTitle("Target location");
                    map.getOverlays().add(startMarker);
                    map.invalidate();
                    getIPandPort();
                    tv_info.setText("Sending Target Coordinates...");

                    new ReceiveCommand().execute();
                    new SendTargetAsyncTask().execute();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

Это асинктическая задача, которая не работает.

public class ReceiveCommand extends AsyncTask<Void, Void, Boolean> {

        @Override
        protected Boolean doInBackground(Void... voids) {
            byte[] lMsg = new byte[64];
            DatagramPacket dp = new DatagramPacket(lMsg, lMsg.length);
            try {
                receivingSocket = new DatagramSocket(15000);
                receivingSocket.setSoTimeout(10000);
                receivingSocket.setReuseAddress(true);
                receivingSocket.receive(dp);
                StateResponse = new String(dp.getData());
                if(!StateResponse.isEmpty())
                {
                    tv_info.setText("Sending Target Coordinates...OK");
                    Log.e("UDP", "doInBackground: Yazi_degismeli");
                }
                Log.e("UDP", "run: paket alındı!" + StateResponse);
            } catch (SocketException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return true;
        }
    }

Спасибо запомощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...