做了3年的IM应用,一直没有确认过socket在系统休眠的情况下会不会就收不到消息了,网上也搜过一些资料说android手机分为AP和BP两个部分,系统休眠的时候AP是休眠的,而BP是不休眠的,网络协议栈是运行在BP层的,所以当BP收到数据包的时候,系统会唤醒AP,但是AP运行的时间是很短的。虽然听起来很有道理的样子,但是没有亲手测试过,还是一块心病~~~,今天又想起这事,索性动手自己写代码测试看看结果。
Server端code:
public class TestServer {
public static void main(String[] argv) {
ServerSocket serverSocket;
try {
serverSocket = new ServerSocket(4444);
Socket client;
while((client = serverSocket.accept()) != null) {
new ClientThread(client).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static class ClientThread extends Thread {
private Socket socket;
private OutputStream outputStream;
public ClientThread(Socket client) {
socket = client;
try {
outputStream = socket.getOutputStream();
} catch (IOException e) {
e.printStackTrace();
}
}
public void run() {
int index = 0;
while(true) {