2017-01-30 15 views
1

У меня есть следующая ситуация. У меня есть локально размещенный сервер TCP/IP, работающий на порту 8090 Мне нужно иметь возможность отправить команду из моего приложения для Android. Сервер должен взять эту команду и вернуть набор необходимой мне информации. У меня нет доступа к журналам сервера или сервера.Необходимо установить связь с локально размещенным сервером TCP/IP в Java Android Studio

Что я пытался

Простое подключение сокета, который, кажется, для подключения просто отлично. Однако после использования printWriter и отправки серверу моей команды. BufferedReader застрял на reader.readLine() или .read(). Я предполагаю, что сервер не отвечает на мою команду, писатель не пишет правильно (как мне сказать?), Или этот метод не подходит для текущей ситуации.

Пробовал работать с объектами URL и HTTPURLConnection, но я не уверен, что делаю это правильно.

У меня есть код, который я могу публиковать, но я не думаю, что он еще не применим.

Что вы предлагаете?

Запрашиваемого код

     Socket socket = new Socket("10.0.0.16", 8090); 

         //Send message to server 
         OutputStream os = socket.getOutputStream(); 
         OutputStreamWriter osw = new OutputStreamWriter(os); 
         BufferedWriter bw = new BufferedWriter(osw); 

         String number = "message"; 

         String sendMessage = number + "\n"; 
         bw.write(sendMessage); 
         bw.flush(); 
         System.out.println("Message sent to the server : "+sendMessage); 
         Thread.sleep(10000); 
         //Get the return message from the server 
         InputStream is = socket.getInputStream(); 
         InputStreamReader isr = new InputStreamReader(is); 
         BufferedReader br = new BufferedReader(isr); 
         String message = br.readLine(); 
         System.out.println("Message received from the server : " +message); 
+1

Можете ли вы отладить сервер? Похоже, решение будет найдено, увидев, что сервер делает/получает. –

+0

Если получатель пытается прочитать строку, вы должны быть уверены, что отправитель отправил строку или закрыл сокет после отправки. Тогда все идет нормально. Так что же вы делаете? – greenapps

+0

'есть код, который я могу опубликовать, но я не думаю, что он еще актуальный. Конечно, это актуально, так как ваш код еще не в порядке. – greenapps

ответ

1

локальный хост относится к устройству, на котором код выполняется, в этом случае эмулятора.

Если вы хотите обратиться к компьютеру, на котором запущен симулятор Android, используйте вместо него IP-адрес 10.0.2.2. Вы можете прочитать больше от here.

+0

Информация в этом ответе не имеет ничего общего с проблемой. Интересно, кто его поддержал. – greenapps

+0

Да, его не тестируют на симуляторе, его тестирование на устройстве Android в той же сети, что и ПК, на котором размещен сервер. –