zoukankan      html  css  js  c++  java
  • 使用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();
        }
    }
  • 相关阅读:
    1.python的一些规范
    linux 命令总结
    【背包专题】D
    【算法入门竞赛经典】【7.2枚举排列】
    【练习赛补题】问题 E: 花生采摘 【模拟】
    【背包专题】B
    【背包专题】A
    【ACM对拍程序~】
    【背包专题】E
    河南省第七届大学生程序设计竞赛 问题 A: 物资调度【简单dfs】
  • 原文地址:https://www.cnblogs.com/Unlimited-Rain/p/12570229.html
Copyright © 2011-2022 走看看