最近项目尚未启动,于是花了点时候复习一些以前学习过的东西,诸如socket, thread, RMI, JDBC等等。
一轮学习下来,最大的感受就是,现在各种的框架实在是太多了,以至于我们都忘记了这些底层的东西,其实很多时候,框架能提供给我们的,未必是我们真正想要的东西。而当我们真正理解了底层的这些知识,学习这些框架也变得简单的多。
用Thread和Socket写了一个非常傻瓜的通讯连接,但是个人感觉还是获益匪浅。
突然回想起当年读书的时候,写过一个用socket通讯的online五子棋对战游戏,还为之写过一个单机版的,自行设计了电脑的算法。现在想来,真的是太有成就感了。后来工作以后,就再没有这样的机会做这些事情了,似乎我们都已经忘记了当初的理想,变成了大公司的一个螺丝钉,为着一些飘渺虚无的目标努力着。
一轮学习下来,最大的感受就是,现在各种的框架实在是太多了,以至于我们都忘记了这些底层的东西,其实很多时候,框架能提供给我们的,未必是我们真正想要的东西。而当我们真正理解了底层的这些知识,学习这些框架也变得简单的多。
用Thread和Socket写了一个非常傻瓜的通讯连接,但是个人感觉还是获益匪浅。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerSocketTest {
/**
* @param args
*/
public static void main(String[] args) {
Server server = new Server();
Thread serverThread = new Thread(server);
serverThread.start();
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
return;
}
Client client = new Client();
Thread clientThread = new Thread(client);
clientThread.start();
}
}
class Server implements Runnable{
public void run() {
ServerSocket ss = null;
try {
ss = new ServerSocket(80);
} catch (IOException e) {
System.out.println("IOException when trying to open server socket");
e.printStackTrace();
return;
}
while(true) {
try {
Socket socket = ss.accept();
//TODO: handle to socket;
process(socket);
socket.close();
} catch(IOException e) {
System.out.println("IOException when trying to handle socket");
e.printStackTrace();
return;
}
}
}
private void process(Socket socket) {
try {
BufferedWriter writer =
new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
writer.append("Hello socket!");
//writer.flush();
writer.close();
} catch(IOException e) {
System.out.println("IOException when trying to write socket");
e.printStackTrace();
return;
}
}
}
class Client implements Runnable{
public void run() {
try {
Socket server = new Socket("localhost", 80);
BufferedReader reader =
new BufferedReader(new InputStreamReader(server.getInputStream()));
String val = reader.readLine();
System.out.println("result is: " + val);
} catch(IOException e) {
System.out.println("IOException when trying to read socket");
e.printStackTrace();
return;
}
}
}
突然回想起当年读书的时候,写过一个用socket通讯的online五子棋对战游戏,还为之写过一个单机版的,自行设计了电脑的算法。现在想来,真的是太有成就感了。后来工作以后,就再没有这样的机会做这些事情了,似乎我们都已经忘记了当初的理想,变成了大公司的一个螺丝钉,为着一些飘渺虚无的目标努力着。