ServerSocket sever;
public SocketServer(int port) {
try {
sever = new ServerSocket(port);
} catch (IOException e) {
e.printStackTrace();
}
}
public void beginListen() {
while (true) {
try {
final Socket socket = sever.accept();
new Thread(new Runnable() {
public void run() {
BufferedReader in;
try {
in = new BufferedReader(new InputStreamReader(
socket.getInputStream(), “UTF-8”));
PrintWriter out = new PrintWriter(
socket.getOutputStream());
while (!socket.isClosed()) {
String str;
str = in.readLine();
out.println("Hello!world!! " + str);
out.flush();
if (str == null || str.equals(“end”))
break;
System.out.println(str);
}
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
SocketClient类,客户端实现:
public class SocketClient {
static Socket client;
public SocketClient(String site, int port) {
try {
client = new Socket(site, port);
System.out.println(“Client is created! site:” + site + " port:"
- port);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public String sendMsg(String msg) {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(
client.getInputStream()));
PrintWriter out = new PrintWriter(client.getOutputStream());
out.println(msg);
out.flush();
return in.readLine();
} catch (IOException e) {
e.printStackTrace();
}
return “”;
}
public void closeSocket() {
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
}
}
接下来就是来测试Socket通信了!
先运行TestSocketServer类,打开服务端,在12345端口处监听!
public class TestSocketServer {
public static void main(String[] argvs) {
SocketServer server = new SocketServer(12345);
server.beginListen();
}
}
再运行TestSocketClient类:
public class TestSocketClient {
public static void main(String[] args) {
SocketClient client = new SocketClient(“127.0.0.1”, 12345);
System.out.println(client.sendMsg(“nimei1”));
client.closeSocket();
SocketClient client1 = new SocketClient(“127.0.0.1”, 12345);
System.out.println(client1.sendMsg(“nimei1111”));
如何成为Android高级架构师!
架构师必须具备抽象思维和分析的能力,这是你进行系统分析和系统分解的基本素质。只有具备这样的能力,架构师才能看清系统的整体,掌控全局,这也是架构师大局观的形成基础。 你如何具备这种能力呢?一是来自于经验,二是来自于学习。
架构师不仅要具备在问题领域上的经验,也需要具备在软件工程领域内的经验。也就是说,架构师必须能够准确得理解需求,然后用软件工程的思想,把需求转化和分解成可用计算机语言实现的程度。经验的积累是需要一个时间过程的,这个过程谁也帮不了你,是需要你去经历的。
但是,如果你有意识地去培养,不断吸取前人的经验的话,还是可以缩短这个周期的。这也是我整理架构师进阶此系列的始动力之一。
成为Android架构师必备知识技能
对应导图的学习笔记(由阿里P8大牛手写,我负责整理成PDF笔记)
部分内容展示
《设计思想解读开源框架》