java socket编程

今天测试java socket编程。下面是代码:

package server;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class TalkClient {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try{
            //向本机的4700接口发送请求
            Socket socket = new Socket("127.0.0.1",4700);
            //由系统标准输入设备构造BufferedReader对象
            BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
            //由Socket对象得到输出流,并构造PrintWriter对象
            PrintWriter os = new PrintWriter(socket.getOutputStream());
            //由socket对象得到输入流,并构造响应的BufferedReader对象
            BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            
            String readline;
            
            readline = sin.readLine();//从系统标准输入读入一个字符串
            while(!readline.equals("bye")){
                os.println(readline);
                os.flush();
                System.out.println("Client:"+readline);
                System.out.println("Server:"+is.readLine());
                readline = sin.readLine();
            }
            os.close();
            is.close();
            socket.close();
            
            
        }catch (Exception e) {
            System.out.println("Error"+e);
        }

    }

}

下面是服务端:

package server;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class TalkServer {
    
    public static void main(String[] args) {
        try{
            ServerSocket server = null;
            try{
                server = new ServerSocket(4700);
                
            }catch(Exception e){
                System.out.println("can not listen to:"+e);
            }
            Socket socket = null;
            try{
                socket = server.accept();
            }catch(Exception e){
                System.out.println("Error."+e);
            }
            
            String line;
            BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter os = new PrintWriter(socket.getOutputStream());
            BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Client:"+is.readLine());
            line = sin.readLine();
            while(!line.equals("bye")){
                os.println(line);
                os.flush();
                System.out.println("Server:"+line);
                System.out.println("Client:"+is.readLine());
                line = sin.readLine();
            }
            os.close();
            is.close();
            socket.close();
            
        }catch(Exception e){
            System.out.println("Error."+e);
        }
    }

}

具体socket在java里面的解析还需要看看源代码。