使用Socket简单模拟C/S消息传递——Java(31)

Posted Unlimited_Rain

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Socket简单模拟C/S消息传递——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();
    }
}

 

以上是关于使用Socket简单模拟C/S消息传递——Java(31)的主要内容,如果未能解决你的问题,请参考以下文章

Socket--模拟聊天

socket.io 下的可靠消息传递?

java socket模拟http请求

一个简单C/S聊天程序

SOCKET的简单介绍

Java编程基础之网络编程