博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网络编程 -金典echo案例
阅读量:6412 次
发布时间:2019-06-23

本文共 4010 字,大约阅读时间需要 13 分钟。

hot3.png

一、服务端

package com.server;import java.io.PrintStream;import java.net.ServerSocket;import java.net.Socket;import java.util.Scanner;/** * @Auther: chenzhou * @Date: 2019/2/25 * @Description: 网络编程服务端 * @version: 1.0 */public class Server{    public static void main(String[] args) throws Exception {        ServerSocket serverSocket = new ServerSocket(9999);//设置端口号        System.out.println("等待客户端连接");        Socket accept = serverSocket.accept();        //首先接收客户端发来的消息,然后进行数据处理后发送回客户端        Scanner scanner = new Scanner(accept.getInputStream());//得到客户端发送的数据        PrintStream stream = new PrintStream(accept.getOutputStream());//向客户端发送数据        Boolean flag = true;        while (flag){            if(scanner.hasNext()){                String next = scanner.next().trim();                if("bye".equals(next)){                    stream.println("ByeBye!!!");                    flag = false;                }else{                    stream.println("[Echo]"+next);                }            }        }        //关闭流        stream.close();        scanner.close();        serverSocket.close();    }}

二、客户端

package com.client;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.Socket;import java.util.Scanner;/** * @Auther: chenzhou * @Date: 2019/2/25 * @Description: 网络编程客户端 * @version: 1.0 */public class Client {    private static final BufferedReader BUFFERED_READER= new BufferedReader(new InputStreamReader(System.in));    public static void main(String[] args) throws Exception{        Socket socket = new Socket("localhost",9999);        Scanner scanner = new Scanner(socket.getInputStream());//服务端发来的信息        PrintStream stream = new PrintStream(socket.getOutputStream());//向服务端发送信息        Boolean flag = true;        while(flag){            String input = getString("请输入要发送的内容");            stream.println(input);            if(scanner.hasNext()){                String next = scanner.next();                System.out.println(next);            }            if("bye".equalsIgnoreCase(input)){                flag = false;            }        }        stream.close();        scanner.close();        socket.close();    }    public static String getString(String Prompt) throws  Exception{        System.out.println(Prompt);        String s = BUFFERED_READER.readLine();        return s;    }}

输出结果:

978af7fe1ed8353b9bc1fe19f1e994bb9d0.jpg

三、多线程实现服务端(多个客户端连接一个服务端)

package com.server;import java.io.IOException;import java.io.PrintStream;import java.net.ServerSocket;import java.net.Socket;import java.util.Scanner;/** * @Auther: chenzhou * @Date: 2019/2/25 * @Description: 多线程实现服务端,让每个线程去处理客户端的请求 * @version: 1.0 */public  class ServerForMore implements  Runnable{    Socket socket = null;    Scanner scanner = null;    PrintStream stream= null;    Boolean flag = true;    //构造器初始化参数    public  ServerForMore(Socket client) throws Exception {        this.socket = client;        scanner = new Scanner(client.getInputStream());//得到客户端发送的数据        stream = new PrintStream(client.getOutputStream());//向客户端发送消息    }    @Override    public void run() {        while (this.flag){            if(this.scanner.hasNext()){                String next = scanner.next().trim();                if("bye".equals(next)){                    stream.println("ByeBye!!!");                    flag = false;                }else{                    stream.println("[Echo]"+next);                }            }        }        //关闭流        stream.close();        scanner.close();        try {            socket.close();        } catch (IOException e) {            e.printStackTrace();        }    }    public static void main(String[] args) throws Exception {        ServerSocket serverSocket = new ServerSocket(9999);        System.out.println("等待客户端连接。。。。");        Boolean flag = true;        while(flag){            Socket client = serverSocket.accept();            new Thread(new ServerForMore(client)).start();        }        serverSocket.close();    }}

 

转载于:https://my.oschina.net/chenzhou/blog/3014415

你可能感兴趣的文章
Storm集群安装详解
查看>>
centos7.x搭建svn server
查看>>
原码编译安装openssh6.7p1
查看>>
项目实战:自定义监控项--监控CPU信息
查看>>
easyui-datetimebox设置默认时分秒00:00:00
查看>>
蚂蚁分类信息系统5.8多城市UTF8开源优化版
查看>>
在django1.2+python2.7环境中使用send_mail发送邮件
查看>>
“Metro”,移动设备视觉语言的新新人类
查看>>
PHP源代码下载(本代码供初学者使用)
查看>>
Disruptor-NET和内存栅栏
查看>>
Windows平台ipod touch/iphone等共享笔记本无线上网设置大全
查看>>
播放加密DVD
查看>>
分享Silverlight新鲜事 - Silverlight Firestarter全球会议
查看>>
产品设计体会(3013)项目的“敏捷沟通”实践
查看>>
RHEL6.3基本网络配置(1)ifconfig命令
查看>>
网络诊断工具之—路由追踪tracert命令
查看>>
Java模拟HTTP的Get和Post请求(增强)
查看>>
php 环境搭建(windows php+apache)
查看>>
让虚拟机的软盘盘符不显示(适用于所有windows系统包括Windows Server)
查看>>
Cygwin不好用
查看>>