使用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();
    }
}

原文地址:https://www.cnblogs.com/Unlimited-Rain/p/12570229.html

时间: 2024-11-13 07:57:08

使用Socket简单模拟C/S消息传递——Java(31)的相关文章

java web学习总结(二十二) -------------------简单模拟SpringMVC

在Spring MVC中,将一个普通的java类标注上Controller注解之后,再将类中的方法使用RequestMapping注解标注,那么这个普通的java类就够处理Web请求,示例代码如下: 1 /** 2 * 使用Controller注解标注LoginUI类 3 */ 4 @Controller 5 public class LoginUI { 6 7 //使用RequestMapping注解指明forward1方法的访问路径 8 @RequestMapping("LoginUI/Lo

HDU-1008-Elevator(Java版本+简单模拟+恶心水果)

Elevator Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 50645    Accepted Submission(s): 27932 Problem Description The highest building in our city has only one elevator. A request list is mad

Java简单模拟Android中Handler-Message机制

在Android中主线程与子线程的通信十分重要,Google工程师为我们提供了Handler-Message机制来解决他们之间的交互问题.今天,我们就来简单理解Handler-Message机制的原理,在Java中简单模拟该机制.代码示例Github地址HandlerDemo 首先,看一下简单流程图(不太专业) 由上图可知,流程中主要相关类有Handler.Message.MessageQueue.Looper:下面,我们就围绕它们来简单分析该流程图: 1.我们一般在主线程创建Handler,接

HDU-1034-Candy Sharing Game(C++ && 简单模拟)

Candy Sharing Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3703    Accepted Submission(s): 2311 Problem Description A number of students sit in a circle facing their teacher in the cent

JavaWeb学习总结(四十九)——简单模拟Sping MVC

在Spring MVC中,将一个普通的java类标注上Controller注解之后,再将类中的方法使用RequestMapping注解标注,那么这个普通的java类就够处理Web请求,示例代码如下: 1 /** 2 * 使用Controller注解标注LoginUI类 3 */ 4 @Controller 5 public class LoginUI { 6 7 //使用RequestMapping注解指明forward1方法的访问路径 8 @RequestMapping("LoginUI/Lo

简单模拟Hibernate的主要功能实现

在学习期间接触到Hibernate框架,这是一款非常优秀的O/R映射框架,大大简化了在开发web项目过程中对数据库的操作.这里就简单模拟其底层的实现. /*******代码部分,及其主要注解**********************/1.实体类User:public class User {    private int id;    private String username;    private String password; public int getId() {       

HDU 4891 简单模拟

The Great Pan Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1035    Accepted Submission(s): 355 Problem Description As a programming contest addict, Waybl is always happy to take part in vario

Spring 架构的简单模拟实现

Spring 架构主要有两大特点: IOC /DI: 控制反转/依赖注入 AOP  切面编程 . 今天主要是实现IOC这一特点. 主要的逻辑如下: User 用户类. UserDAO  User类的访问接口. UserDAOImpl  实现UserDAO 接口以实现拓展. UserService  包含一系列的用户功能 ,如addUser 关于以上类的代码: package com.bjsxt.model; public class User { private String username;

【android】Socket简单用法

原文地址:http://www.cnblogs.com/harrisonpc/archive/2011/03/31/2001565.html Socket通常也称做”套接字“,用于描述IP地址和端口,废话不多说,它就是网络通信过程中端点的抽象表示.值得一提的是,Java在包java.net中提供了两个类Socket和ServerSocket,分别用来表示双向连接的客户端和服务端.这是两个封装得非常好的类,使用起来很方便! 下面将首先创建一个SocketServer的类作为服务端如下,该服务端实现