将socket转换为单例模式
public class MySocket extends Socket {
private static MySocket mySocket = new MySocket();
//......
// 无法直接用new获取MySocket实例
private MySocket(){
Log.d(TAG, "MySocket: new MySockcet()");
}
public static MySocket getInstance(){
return mySocket;
}
/*
* 包含网络操作,必须在子线程中运行
*/
public void createMySocket(){
try {
socket = new Socket(SERVER_IP,SERVER_PORT);
initStream();
} catch (IOException e) {
e.printStackTrace();
}
}
//......
另外设置了checkInitialized方法检测是否完成了初始化
服务器端对命令的解析
以及协议的设计
是否需要把服务器发送回来的消息的处理,单独放到一个子线程中进行?
客户端循环接收服务器消息
客户端用while循环一直br.readline读取服务器的信息。这样有一个致命的问题,客户端调用br.close时无法成功,因为br.readline没有结束,br被占用,导致socket无法关闭。暂时没有解决