【Java】【网络编程】模仿客户端与服务器进行socket交互(

2017-04-08  本文已影响36人  JerichoPH

模仿客户端与服务器进行socket交互(TCP协议)多线程及字节流优化

/**
 * TCP协议演示 客户端
 * 
 * @author JerichoPH
 */
public class Demo_TCP_Client {
    public static void main(String[] args) throws Exception {
        Socket socket = new Socket("127.0.0.1", 6666); // 创建客户端socket
    
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 将字节流包装成字符流
        PrintStream ps = new PrintStream(socket.getOutputStream()); // printstream中有输出换行的方法
    
        System.out.println(br.readLine()); // 读取服务器端发送的信息
        
        ps.println("客户端发送的信息"); // 向服务器发送信息
    
        socket.close(); // 客户端关闭socket连接。关闭socket就同时关闭了流,所以不需要单独关闭BufferReader InputStreamReader
    }
}

/**
 * TCP协议演示 服务端
 * 
 * @author JerichoPH
 */
public class Demo_TCP_Server {
    public static void main(String[] args) throws Exception {
        ServerSocket server = new ServerSocket(6666); // 创建服务器端socket
    
        while (true) {
            final Socket socket = server.accept(); // 接受客户端请求
            new Thread() {
                @Override
                public void run() {
                    try {
                        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 将字节流包装成字符流
                        PrintStream ps = new PrintStream(socket.getOutputStream()); // PrintStream中有写出换行的方法
                    
                        ps.println("欢迎访问"); // 向客户端发送信息
                    
                        System.out.println(br.readLine()); // 接收客户端发来的消息
                    
                        socket.close(); // 服务器关闭socket,但是不能关闭server。 关闭socket就同时关闭了流,所以不需要单独关闭BufferReader InputStreamReader
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }.start();
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读