Implemented the server on the laptop, the client is the Android phone. Did it with the HttpClient. The problem is that the server (laptop) responds only to the first request from the client (phone), and does not seem to see the others.

Server:

import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; /** * Created by Stanislav Trushin on 14.11.2016. */ public class HttpServer extends Thread { static Socket socket; static ServerSocket ss; public static void main(String[] args) { int port = 3333; // случайный порт (может быть любое число от 1025 до 65535) try { ss = new ServerSocket(port); // создаем сокет сервера и привязываем его к вышеуказанному порту System.out.println("Waiting for a client..."); socket = ss.accept(); // заставляем сервер ждать подключений и выводим сообщение когда кто-то связался с сервером System.out.println("Got a client :) ... Finally, someone saw me through all the cover!"); System.out.println(); // Берем входной и выходной потоки сокета, теперь можем получать и отсылать данные клиенту. InputStream sin = socket.getInputStream(); OutputStream sout = socket.getOutputStream(); // Конвертируем потоки в другой тип, чтоб легче обрабатывать текстовые сообщения. DataInputStream in = new DataInputStream(sin); DataOutputStream out = new DataOutputStream(sout); String line = null; while(true) { line = in.readUTF(); // ожидаем пока клиент пришлет строку текста. System.out.println("The dumb client just sent me this line : " + line); System.out.println("I'm sending it back..."); out.writeUTF(line); // отсылаем клиенту обратно ту самую строку текста. out.flush(); // заставляем поток закончить передачу данных. System.out.println("Waiting for the next line..."); System.out.println(); } } catch(Exception e) { e.printStackTrace(); } } } 

Customer:

 package com.tfirst.httpclientproject; import android.os.AsyncTask; import java.io.*; import java.net.InetAddress; import java.net.Socket; import java.util.Arrays; /** * Created by Stanislav Trushin on 14.11.2016. */ public class HttpClient extends AsyncTask<String, Void, String> { public MainActivity ma; public HttpClient(MainActivity ma) { this.ma = ma; } @Override protected String doInBackground(String... strings) { int serverPort = 3333; // здесь обязательно нужно указать порт к которому привязывается сервер. String address = "192.168.1.33"; // это IP-адрес компьютера, где исполняется наша серверная программа. String line = null; try { InetAddress ipAddress = InetAddress.getByName(address); // создаем объект который отображает вышеописанный IP-адрес. System.out.println("Any of you heard of a socket with IP address " + address + " and port " + serverPort + "?"); Socket socket = new Socket(ipAddress, serverPort); // создаем сокет используя IP-адрес и порт сервера. System.out.println("Yes! I just got hold of the program."); // Берем входной и выходной потоки сокета, теперь можем получать и отсылать данные клиентом. InputStream sin = socket.getInputStream(); OutputStream sout = socket.getOutputStream(); // Конвертируем потоки в другой тип, чтоб легче обрабатывать текстовые сообщения. DataInputStream in = new DataInputStream(sin); DataOutputStream out = new DataOutputStream(sout); // Создаем поток для чтения с клавиатуры. System.out.println("Type in something and press enter. Will send it to the server and tell ya what it thinks."); System.out.println(); while (true) { System.out.println("Sending this line to the server..."); out.writeUTF(Arrays.toString(strings)); // отсылаем введенную строку текста серверу. out.flush(); // заставляем поток закончить передачу данных. line = in.readUTF(); // ждем пока сервер отошлет строку текста. System.out.println(line); return line; } } catch (Exception e) { e.printStackTrace(); } return line; } protected void onPostExecute(String line) { ma.setTextToTextView(line); } } 

I think the problem is on the server side, but I can not understand what is all the same.

    0