Сокеты. Прием и отдача данных. Андроид

224
11 января 2018, 22:01

Есть клиент(андроид прил.) и Сервер(Ява прога). Сделал свой первый сокет и не очень в этом всем разбираюсь. На начала сделал прогу которая отправляет сообщения на сервер а тот принимает и пишет камандой System.out.println(msg). Тута все идеально но проблема в том что Когда я попытался сам самостоятельно прочитать на клиенте и отправить на сервере то ничего не вышло. Вота кот сервера:

 try {
        while(true){
            mySock = new ServerSocket(5000);
            s = mySock.accept();
            in = new InputStreamReader(s.getInputStream());
            br = new BufferedReader(in);
            msg = br.readLine();
            System.out.println(msg);
            // Нижней код написал сам. Без этого код работал
            // пытаюсь прочитать данные
            pr = new PrintWriter(s.getOutputStream());
            pr.write("send massenge");
            System.out.println("send massenge");
            pr.close();
            in.close();
            br.close();
            mySock.close();
            s.close();
        }
    } catch (IOException ex) {
        Logger.getLogger(JavaServer.class.getName()).log(Level.SEVERE, null, ex);
    }

вот клиента(при каждом нажатии кнопки создается и запускается этот класс):

class MyTask extends AsyncTask{

    @Override
    protected void onProgressUpdate(String... values) {
        if (values[0].equals("0")){
            Toast.makeText(context , "true" , Toast.LENGTH_LONG).show();
        }
        else if (values[0].equals("1")){
            Toast.makeText(context , "false" , Toast.LENGTH_LONG).show();
        }
        else if(values[0] == null){
            Toast.makeText(context , "null" , Toast.LENGTH_LONG).show();
        }
        else{
            Toast.makeText(context , values[0] , Toast.LENGTH_LONG).show();
        }
    }
    @Override
    protected String doInBackground(String... voids) {
        try {
            socket = new Socket(ip , 5000);
            if (socket.isConnected()){
                publishProgress("0");
            }
            else {
                publishProgress("1");
            }
            pr = new PrintWriter(socket.getOutputStream());
            pr.write("message");
            // Нижней код написал сам. Без этого код работал
            // пытаюсь принять данные
            input = new InputStreamReader(socket.getInputStream());
            bf = new BufferedReader(input);
            String s = bf.readLine();
            publishProgress("server:".concat(s));

            bf.close();
            input.close();
            pr.close();
            socket.close();
            return "okey";
        } catch (IOException e) {
            return "ne okey";
        }
    }
}

При этом никаких ошибок. При первом нажатии выводиться Toast c надписью "true" , втарой же раз никакой реакции.

input = new InputStreamReader(socket.getInputStream());
bf = new BufferedReader(input);
String s = bf.readLine();
publishProgress("server:".concat(s));

не выводится

READ ALSO
CRUD операции в Realm + RXJava

CRUD операции в Realm + RXJava

Дело в том что я до этого удалял и обновлял записи в Realm таким образом:

235
Размещение виджета ниже ListView

Размещение виджета ниже ListView

Как разместить TextView ниже ListView ?

213
Как найти цифру 0 в в заданном числе JAVA

Как найти цифру 0 в в заданном числе JAVA

Нужно найти в заданном с клавиатуры шестизначном числе, цифры 0

208
Нужно полностью обновить SQLite базу данных при повышении версии кода приложения

Нужно полностью обновить SQLite базу данных при повышении версии кода приложения

Имеется приложение, которое работает с локальной базой данных SQLiteВ этой БД хранятся ссылки на файлы и ключевые слова, по которым можно найти...

198