Я запускаю этот код на Samsung Galaxy S7 с Oreo 8.0, и розетка не открывается, когда я пытаюсь подключиться, я получаю сообщение «Отказано в соединении». Тот же код отлично работает на Samsung Galaxy S5 с Marshmallow 6.0.1. Есть ли какие-нибудь изменения в сокетах API для Oreo?
Handler handler = new Handler();
ServerThread serverThread = new ServerThread(handler);
Thread thread = new Thread(serverThread);
thread.start();
И есть класс ServerThread:
public class ServerThread implements Runnable {
private ServerSocket serverSocket;
private Socket client;
private DataInputStream dataInputStream;
private Handler handler;
public ServerThread(Handler handler) {
this.handler = handler;
}
@Override
public void run() {
try {
handler.post(new Runnable() {
@Override
public void run() {
Log.d("app", "listening...");
}
});
serverSocket = new ServerSocket();
serverSocket.setReuseAddress(true);
serverSocket.bind(new InetSocketAddress(5000));
client = serverSocket.accept();
handler.post(new Runnable() {
@Override
public void run() {
Log.d("app", "connected");
}
});
dataInputStream = new DataInputStream(client.getInputStream());
boolean done = false;
while (!done) {
try {
byte messageType = dataInputStream.readByte();
Log.d("app", "read byte " + messageType);
switch (messageType) {
// do something here, at some point I set done = true
}
} catch (Exception e) {
e.printStackTrace();
}
}
dataInputStream.close();
serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}