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 

客户端:

 
原文地址:https://www.cnblogs.com/xierunfang/p/11750567.html