使用Socket简单模拟C/S消息传递(TCP)——Java面向对象基础(31)

1.socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。

2.通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。
3.我们把插头插到插座上就能从电网获得电力供应,同样,为了与远程计算机进行数据传输,需要连接到因特网,而 socket 就是用来连接到因特网的工具。

 

客户端

public class MyClient {
    public static final String SERVER_LOCALHOST="127.0.0.1";
    //服务端的IP
    public static final int SERVER_PORT=8080;
    //服务端的端口
    public static void main(String[] args) throws Exception {
        //创建客户端的Socket对象,并且指定服务端的IP以及端口
        Socket socket=new Socket(SERVER_LOCALHOST,SERVER_PORT);
        //获取Socket输出流
        OutputStream os=socket.getOutputStream();
        //准备一句话
        String say="hello";
        //将字节流转换为字符流
        OutputStreamWriter osw=new OutputStreamWriter(os);
        //将字符流转换为字符缓冲流
        BufferedWriter bw=new BufferedWriter(osw);
        
        bw.write(say);
        bw.flush();
        //禁用Socket中的输出流
        socket.shutdownOutput();
        
        //获取Socket输入流
        InputStream is=socket.getInputStream();
        //将字节流转换为字符流
        InputStreamReader isr=new InputStreamReader(is);
        //将字符流转换为字符缓冲流
        BufferedReader br=new BufferedReader(isr);
        //读出
        String clientContent=br.readLine();
        System.out.println(clientContent);
        
        br.close();
        bw.close();
        socket.close();
        
    }
}

 

服务端

public class MyServer {
    //服务端的端口
    public static final int SERVER_PORT=8080;
    public static void main(String[] args) throws Exception {
        //创建服务端Socket对象
        ServerSocket serverSocket=new ServerSocket(SERVER_PORT);
        //监听来自客户端的请求
        Socket socket=serverSocket.accept();
        //获取Socket输入流
        InputStream is=socket.getInputStream();
        //将字节流转换为字符流
        InputStreamReader isr=new InputStreamReader(is);
        //将字符流转换为字符缓冲流
        BufferedReader br=new BufferedReader(isr);
        //读出
        String clientContent=br.readLine();
        System.out.println(clientContent);
        
        //禁用Socket中的输入流
        socket.shutdownInput();
        
        //回复
        String responseSay="hellohello";
        OutputStream os=socket.getOutputStream();
        //将字节流转换为字符流
        OutputStreamWriter osw=new OutputStreamWriter(os);
        //将字符流转换为字符缓冲流
        BufferedWriter bw=new BufferedWriter(osw);
        //写入
        bw.write(responseSay);
        bw.flush();
        
        
        bw.close();
        br.close();
        socket.close();
        serverSocket.close();
    }
}

 

posted @ 2020-03-25 20:49  Unlimited_Rain  阅读(238)  评论(0编辑  收藏  举报