最近看到阿里的一位童鞋写的一本关于分布式的书,感觉不错,准备把这本书上基础的代码都写一写。

/**
 * Created by LiuHuiChao on 2016/11/15.
 * description:based on TCP/IP+BIO to deliver the message
 */
public class TCP_IP_BIO {

    /**
     * client端
     * @throws IOException
     */
    @Test
    public void startClient() throws IOException {
        Socket socket =new Socket("127.0.0.1",8888);
        /**创建读取服务器端返回流的BufferedReader*/
        BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
        /**创建向服务器写入流的PrintWriter*/
        PrintWriter out=new PrintWriter(socket.getOutputStream(),true);
        /**向服务器发送字符串信息,此处即使写失败,也不会抛出异常信息,并且一直阻塞到写入操作系统或网络IO出现异常*/
        out.println("chifanla");
        /**阻塞读取服务端的返回信息,一下代码会阻塞到服务端返回信息或者网络IO出现异常,如果希望在超时一段时间就不阻塞了,那么久需要在创建socket之后,调用setTimeOut*/
        //in.readLine();
    }

    /**
     * 服务端
     * @throws IOException
     */
    @Test
    public void startServer() throws IOException {
        /**创建对本地指定端口的监听,如果端口冲突,则抛出SocketException;其他网络IO异常抛出IOException*/
        ServerSocket serverSocket=new ServerSocket(8888);
        /**接受客户端简历的连接请求,并且返回一个Socket对象,以便与客户端进行交互;*/
        Socket socket=serverSocket.accept();
        byte[] read=new byte[128];
        socket.getInputStream().read(read,0,128);
        System.out.println(read.toString());

    }
}

Java——基于java自身包实现消息系统间的通信(TCP/IP+BIO)的更多相关文章

  1. Java——基于java自身包实现消息系统间的通信(TCP/IP+NIO)

    /** * Created by LiuHuiChao on 2016/11/15. * description:based on TCP/IP+NIO to deliver the message ...

  2. Java多线程之线程的状态以及线程间协作通信导致的线程状态转换

      转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6561589.html  一:线程的状态以及变化图 Java中线程中状态可分为五种:New(新建状态),Ru ...

  3. 《Wireshark数据包分析实战》 - http背后,tcp/ip抓包分析

    作为网络开发人员,使用fiddler无疑是最好的选择,方便易用功能强. 但是什么作为爱学习的同学,是不应该止步于http协议的,学习wireshark则可以满足这方面的需求.wireshark作为抓取 ...

  4. Java基于SSM的个人博客系统(源码 包含前后台)

    @ 目录 系统简介 系统运行截图 核心代码 写在最后 系统简介 技术点:Java.JSP.SSM框架,实现了个人博客系统 用户角色分为:普通用户.管理员.系统管理员 功能:发博客.博客分类.博客删除. ...

  5. Java并发读书笔记:如何实现线程间正确通信

    目录 一.synchronized 与 volatile 二.等待/通知机制 等待 通知 面试常问的几个问题 sleep方法和wait方法的区别 关于放弃对象监视器 三.等待通知典型 生产者消费者模型 ...

  6. Java通过wait()和notifyAll()方法实现线程间的通信

    Java代码(使用了2个内部类): package Threads; import java.util.LinkedList; /** * Created by Frank */ public cla ...

  7. Java核心知识点学习----多线程并发之线程间的通信,notify,wait

    1.需求: 子线程循环10次,主线程循环100次,这样间隔循环50次. 2.实现: package com.amos.concurrent; /** * @ClassName: ThreadSynch ...

  8. 分布式架构从零开始========》【基于Java自身技术实现消息方式的系统间通信】

    基于Java自身包实现消息方式的系统间通信的方式有:TCP/IP+BIO,TCP/IP+NIO,UDP/IP+BIO,UDP/IP+NIO.下面就这4种类型一一做个详细的介绍: 一.TCP/IP+BI ...

  9. Java与C++进行系统间交互:Protocol Buffer

    在一次项目中,因笔者负责的java端应用需要与公司C++系统进行交互,公司选定Protocol Buffer方案,故简单的了解一下 有需要的可以看一下其他作者的文章,了解一下Protobuf: htt ...

随机推荐

  1. python3之安装mysql问题

    python3是不能通过pip install mysql或pipinstall mysqldb这样的形式来安装mysql. 只能 pip install PyMySQL 至于如何在文件中引用? 答曰 ...

  2. rocketmq双主发送消息 SLAVE_NOT_AVAILABLE 状态

    RocketMQ最佳实践之Producer 投递状态 发送消息时,将得到包含SendStatus的SendResult.首先,我们假设消息的isWaitStoreMsgOK = true(默认是tru ...

  3. 博客存档TensorFlow入门一 1.4编程练习

        import tensorflow as tf import numpy import matplotlib.pyplot as plt #from sklearn.model_selecti ...

  4. Java 数据库操作oracle增删改查,通用封装基于hashmap

    pt1:首先安装oracle连接驱动 下载地址:https://pan.baidu.com/s/1jW_ofgU4eJmAn7Y2J5B46A  密码:epkz 1.将ojdbc6.jar导入项目中 ...

  5. SSIS Debug

    プロジェクト=>最后一项[DEPJ1200プロパテイページ] 1.配置...=>CreaeDeploymentUtility=True2.デパッグ=>Run64BiRuntime=f ...

  6. 利用matplotlib绘画出二特征的散点图

    实例的所有数据来源于吴恩达教授的机器学习数据,特此感谢.数据源可以前往course下载. 本文主要目地在于绘画二维的散点图,至于scatter的用法可以参见我之前的博客. import pandas ...

  7. Loadrunner手动关联详解

    Loadrunner手动关联详解 一.关联的含义: 关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到 ...

  8. Android 异步开发之 AsyncQueryHandler 批量添加联系人

    AsyncQueryHandler: 官方解释是一个异步帮助类(A helper class to help make handling asynchronous ContentResolver qu ...

  9. JBPM学习(四):运行流程实例

    概念: ProcessInstance,流程实例:代表流程定义的一次执行.如:张三昨天按请假流程请了一次假.一个流程实例包含了全部执行阶段,当中最典型的属性就是跟踪当前节点的指针,例如以下图. Exe ...

  10. 通过代码退出IOS程序

    -(void) tapClick:(UITapGestureRecognizer *)tap{ [UIViewbeginAnimations:@"exitApplication"c ...