• Java 网络编程


    socket通信机制

      建立在两种通信协议上 tcp 和 udp 。

        tcp:可靠传输,建立在三次握手基础上,有一次服务端与客户端确认的过程,确认后服务端再与客户端继续通信,面向连接。

        udp:一种报文协议,是无连接的不安全的。

    Java 网络编程 初识

      阻塞的IO: 按照命名理解,server端与client端通信是阻塞的,server会一直监听某个接口直到有client端与它建立连接。

      非阻塞的IO:server端与client的通信是非阻塞的,异步建议连接,在异步web中主要学习了解了netty。

    阻塞IO的例子:

     非阻塞IO:

    netty的核心组件:

    Channel:传入(入站)或者传出(出站)数据的载体;它可以被打开或者被关闭,连接或者断开连接。 

    回调:是一个方法,一个指向已经被提供给另外一个方法的方法的引用。这使得后 者 可以在适当的时候调用前者

    Future:一个异步操 作的结果的占位符;它将在未来的某个时刻完成,并提供对其结果的访问。

    举例:

     事件和 ChannelHandler:使用不同的事件来通知我们状态的改变或者是操作的状态。这使得我们能够基于已经 发生的事件来触发适当的动作

    相关时序图与例子:

    服务端:

    1、创建ServerBootStrap实例
    2、设置并绑定Reactor线程池:EventLoopGroup,EventLoop就是处理所有注册到本线程的Selector上面的Channel
    3、设置并绑定服务端的channel
    4、5、创建处理网络事件的ChannelPipeline和handler,网络时间以流的形式在其中流转,handler完成多数的功能定制:比如编解码 SSl安全认证
    6、绑定并启动监听端口
    7、当轮训到准备就绪的channel后,由Reactor线程:NioEventLoop执行pipline中的方法,最终调度并执行channelHandler 

    客户端:

     
  • 相关阅读:
    flush privileges 什么意思
    kill
    xargs
    mysql 5.6 与5.7安装
    内核线程、轻量级进程、用户线程
    在gdb将所有线程的堆栈输出到文件中去
    GDB 反向调试(Reverse Debugging)
    redhat 6.6 安装 (LVM)
    GDB中创建要素数据集
    AO Identify地图交互
  • 原文地址:https://www.cnblogs.com/xierunfang/p/11750567.html
Copyright © 2020-2023  润新知