JavaSocket编程基础
1、BIO的基本模型图
上图描述了BIOSocket通信时的基本结构
2、Socket通信基本示例
服务端代码:
public class BioServer {
public static void main(String[] args) {
int port = 8080;
try {
ServerSocket server = new ServerSocket(port);
Socket socket = server.accept();
new Thread(new ServerHandler(socket)).start();
}catch (Exception e){
e.printStackTrace();
}finally {
//做相应的结尾动作
}
}
static class ServerHandler implements Runnable {
private Socket socket;
public ServerHandler(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
BufferedReader in = null;
PrintWriter out = null;
try{
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(),true);
String expression;
String result;
while(true){
//通过BufferedReader读取一行
//如果已经读到输入流尾部,返回null,退出循环
//如果得到非空值,就尝试计算结果并返回
if((expression = in.readLine())==null) break;
System.out.println("服务器收到消息:" + expression);
try{
result = "返回"+expression;
}catch(Exception e){
result = "计算错误:" + e.getMessage();
}
out.println(result);