/**
 * 基于TCP/IP的Socket通信实现
 */

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

/*
 * 服务器端代码
 */

public class ServerSocketDemo {
    public static void main(String[] args) throws IOException {
        //创建服务器端
        ServerSocket ss = new ServerSocket(8080);
        System.out.println("服务器已经启动...");
        //监听
        Socket s = ss.accept();
        //获取输入流
        InputStream is = s.getInputStream();
        //包装一下
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        //读取数据
        System.out.println(br.readLine());

        //获取输出流
        OutputStream os = s.getOutputStream();
        //包装一下
        PrintWriter pw = new PrintWriter(new OutputStreamWriter(os),true);
        //回写数据
        pw.write("Hello User!");
        pw.flush();

        //释放资源
        br.close();
        is.close();
        pw.close();
        os.close();
        s.close();
        ss.close();

        System.out.println("服务器已经关闭");
    }
}


/**
 * 基于TCP/IP的Socket通信实现
 */

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;

/*
 * 客户端
 */

public class SocketDemo {
    public static void main(String[] args) throws IOException, IOException {
        //创建套接字
        Socket s = new Socket(InetAddress.getLocalHost(),8080);
        System.out.println("客户端启动了");
        //获得输出流
        OutputStream os = s.getOutputStream();
        //包装一下
        PrintWriter pw = new PrintWriter(new OutputStreamWriter(os),true);
        //输出数据
        pw.println("Hellw Word!");
        //刷新数据
        pw.flush();

        //获取输入流
        InputStream is = s.getInputStream();
        //包装一下
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        //读取响应
        String line;
        while((line=br.readLine())!=null){
            System.out.println(line);
        }

        //释放资源
        pw.close();
        os.close();
        br.close();
        is.close();
        s.close();
        System.out.println("客户端关闭了");
    }

}