博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java的BIO
阅读量:4037 次
发布时间:2019-05-24

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

BIO是最基本的IO,其流程图如下:

 

示例代码:

public class Server {    public static void main(String[] args) throws Exception {        ServerSocket ss = new ServerSocket();        ss.bind(new InetSocketAddress("127.0.0.1",8888));        while(true) {            System.out.println("开始接收消息");            Socket s = ss.accept();            System.out.println("已经接收到消息");            new Thread(()->{                handler(s);            }).start();        }    }    private static void handler(Socket s) {        try {            byte[] words = new byte[1024];            int read = s.getInputStream().read(words);            System.out.println(read+"-------"+new String(words));            Thread.sleep(2000);            s.getOutputStream().write("总部收到 copy that".getBytes("gbk"));            s.shutdownOutput();            s.shutdownInput();        } catch (Exception e) {            e.printStackTrace();        }    }}public class Client {    public static void main(String[] args) {        Socket s = new Socket();        try {            System.out.println(Thread.currentThread().getName() + "=======" + "client 建立连接");            s.connect(new InetSocketAddress("127.0.0.1", 8888));            System.out.println(Thread.currentThread().getName() + "=======" + "client 发送消息");            s.getOutputStream().write("client hello".getBytes());            s.getOutputStream().flush();            byte[] result = new byte[1024];            s.getInputStream().read(result);            System.out.println(new String(result, "gbk"));            s.getInputStream().close();        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                s.close();                System.out.println("客户端结束");            } catch (IOException e) {                e.printStackTrace();            }        }    }}

 

转载地址:http://uhcdi.baihongyu.com/

你可能感兴趣的文章
进程的状态
查看>>
Runnable和Thread 两种实现方式的区别和联系:
查看>>
并发和并行的区别
查看>>
JAVA多线程和并发基础面试问答
查看>>
线程池的介绍及简单实现
查看>>
利用session,cookie进行安全性控制
查看>>
Session和Cookie的区别及Session的生命周期
查看>>
线程池 Thread Pools
查看>>
Cannot forward after response has been committed 错误解决
查看>>
Linux系统调用--getpid/getppid函数详解
查看>>
二分法排序
查看>>
内部排序
查看>>
二叉树前序、中序、后序遍历相互求法
查看>>
静态链接库与动态链接库
查看>>
C++ 子类调用父类构造和析构函数的顺序
查看>>
[进程管理]linux 下 进程和线程的区别(baidu 面试)
查看>>
父类、构造函数、成员对象的调用时机
查看>>
父类、构造函数、成员对象的调用时机
查看>>
字符串处理 子串不重复
查看>>
PageRank迭代求解方法
查看>>