`
young-2017
  • 浏览: 8933 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

BIO实现简单通信

阅读更多
client端
package com.huayang.Bio;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class BioClient {
    public static void main(String[] args) {
        BufferedReader in = null;
        PrintWriter out = null;
        Socket socket = null;

        try {
            socket = new Socket("127.0.0.1", 10001);

            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String s = null;
            out = new PrintWriter(socket.getOutputStream(), true);
            out.println("query time order");
            s = in.readLine();
            System.out.println("接收到服务端消息:" + s);


        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (out != null) {
                out.close();
            }
            if (socket != null) {
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}



server端:
package com.huayang.Bio;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;


public class BioServer {

    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        try {
            serverSocket = new ServerSocket(10001);
            System.out.println("the time server is start in port : 10001");
            Socket socket = null;
            while (true) {
                socket = serverSocket.accept();
                new Thread(new ServerHandler(socket)).start();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (null != serverSocket) {
                try {
                    serverSocket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }
    }
}


handler:
package com.huayang.Bio;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Date;

public class ServerHandler implements Runnable {

    private Socket socket;

    public ServerHandler(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {
        BufferedReader bufferedReader = null;
        PrintWriter out = null;

        try {
            while (true) {
                bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                out = new PrintWriter(socket.getOutputStream(), true);
                String currentTime = "";
                String body = null;
                body = bufferedReader.readLine();
                if (body == null)
                    break;
                currentTime = "query time order".equalsIgnoreCase(body) ?
                        new Date(System.currentTimeMillis()).toString() : "bad order";
                System.out.println("服务端接收到 query time order 命令 " + currentTime);
                out.println(currentTime);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (bufferedReader != null) {
                try {
                    bufferedReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (out != null) {
                out.close();
            }
            if (this.socket != null) {
                try {
                    this.socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
分享到:
评论

相关推荐

    Socket 之 BIO、NIO、Netty 简单实现

    《Socket 之 BIO、NIO、Netty 简单实现》博客附件。 博客地址:https://blog.csdn.net/Supreme_Sir/article/details/112725728

    JAVA实现简单RPC框架

    java原生实现的RPC框架,使用技术:JDK动态代理、Socket通信(BIO方式)、反射、注解、Java序列化

    基于Java Spring的科技大学博客社区系统的设计与实现毕业设计 含论文、源代码、数据库、答辩PPT等资料 直接可用.rar

    通过架构实现以BIO、NIO为核心的I/O模型的ServerSocket,解构HTTP1.1协议内容,并且封装简易的API以达到类似Tomcat、Servlet的效果。 业务逻辑上通过Flyboot框架,实现对接口的解析以及系列逻辑判断,将最终的结果以...

    java编写的简单c/s通讯程序

    本程序采用java语言编写,分别编写了客户端代码,服务端代码。使用方法:更改程序中的ip地址,改为自己的ip。具体功能:实现简单的数据传输。

    NIO框架Netty实现高性能高并发

    相比于传统基于Java序列化+BIO(同步阻塞IO)的通信框架,性能提升了8倍多。 事实上,我对这个数据并不感到惊讶,根据我5年多的NIO编程经验,通过选择合适的NIO框架,加上高性能的压缩二进制编解码技术,精 心的设计...

    基于javatcpsocket通信的拆包和装包源码-niochatroom:基于Javanio的聊天室

    群聊系统,实现服务器端和客户端之间的数据简单通讯(非阻塞) 2)实现多人群聊 3)服务器端:可以监测用户上线,离线,并实现消息转发功能 4)客户端:通过channel 可以无阻塞发送消息给其它所有用户,同时可以接受...

    基于Python实现的电商评论数据挖掘观点抽取、句子级观点级情感分析系统源码+项目运行说明.zip

    观点抽取本质上就是命名实体识别NER任务,只不过不需要很复杂BIO去识别出实体的类型,如地点机构人物,只用简单的BIO就行了。所以要先对数据进行预处理成以BIO标注格式的数据。但首先也要先将之前我们下载好的...

    java8集合源码分析-notes:读书笔记

    一个快速,简单的分布式发布-订阅消息系统(mq) Nanomsg nanomsg是一个消息通信组件 - zeromq的作者之一用C语言重写的通信框架, OpenMQ Open-MQ 是一个开源的消息中间件,类似IBM的 WebSphere MQ(MQSeries),采用 ...

    abuse-kmod:虐待

    滥用用户空间块设备驱动程序这是一个Linux内核模块,用于在用户空间中实现块设备。 这项工作主要基于Zachary Amsden的补丁。如何“ make”执行一些简单的测试脚本。内核模块参数max_abuse:滥用设备的最大数量max_...

    Java 基础核心总结 +经典算法大全.rar

    示例:简易的客户端服务器通信 集合 集合框架总览 -、Iterator Iterable ListIterator 二、Map 和 Collection 接口Map 集合体系详解 HashMap LinkedHashMap TreeMap WeakHashMap Hashtable Collection 集合体系详解 ...

    netty-study:netty-study

    一。概念问题 1.1双边和非双边 双向和非双向是进程在访问数据的...IO(BIO)同步双向IO NIO异步非双向IO(使用线程池来进行实现) 1.4 IO的概念 BIO适用于连接数量比较小,而且是固定的架构,程序了解起来也比较简单。

    代码之美(中文完整版).pdf

    5.3 版本1:简单的实现 5.4 版本2:模拟BNF语法——复杂度O(N) 5.5 版本3:第一个复杂度O(log N)的优化 5.6 版本4:第二次优化:避免重复验证 5.7 版本5:第三次优化:复杂度 O(1) 5.8 版本 6:第四次优化:缓存...

    openssl-1.0.0a

    这个工作不再是简单的读懂几本密码学专著和协议文档那么简单,而是要理解所有这些算法、标准和协议文档的每一个细节,并用你可能很熟悉的C语言字符一个一个去实现这些定义和过程。我们不知道你将需要多少时间来完成...

    spring-boot示例项目

    RocketMQ|[Spring Cloud Alibaba(五)RocketMQ 异步通信实现](https://github.com/smltq/spring-boot-demo/blob/master/cloud-alibaba/README5.md) ### 其它 模块名称|主要内容 ---|--- leetcode|[力扣题解...

    homeassistant:家庭助理配置

    家庭助理具有家庭自动化的配置。 在示例”页面上精选家庭助理版本:0.114.0概述我利用家庭助手来桥接和自动化我所有的家庭自动化产品。... 我已经将家庭自动化实践扩展到ESPHome平台,以实现电力监控自动化以及为Bio

Global site tag (gtag.js) - Google Analytics