socket, thread, JDBC以及守护进程

最近项目尚未启动,于是花了点时候复习一些以前学习过的东西,诸如socket, thread, RMI, JDBC等等。

一轮学习下来,最大的感受就是,现在各种的框架实在是太多了,以至于我们都忘记了这些底层的东西,其实很多时候,框架能提供给我们的,未必是我们真正想要的东西。而当我们真正理解了底层的这些知识,学习这些框架也变得简单的多。

用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五子棋对战游戏,还为之写过一个单机版的,自行设计了电脑的算法。现在想来,真的是太有成就感了。后来工作以后,就再没有这样的机会做这些事情了,似乎我们都已经忘记了当初的理想,变成了大公司的一个螺丝钉,为着一些飘渺虚无的目标努力着。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值