我在带有Oreo 8.0的三星Galaxy S7上运行此代码并且套接字未打开,当我尝试连接时,我收到“连接被拒绝” . 相同的代码在带有Marshmallow 6.0.1的三星Galaxy S5上运行良好 . Oreo的套接字api有什么变化吗?
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();
}
}
}