网络编程
大雄小方
想回到过去,试着让故事继续...
展开
-
网络编程之BIO
网络编程之BIOBIO是一种同步阻塞模式的网络处理方式,它的思想是一个线程处理一个连接,当连接没有事件方式的时候,线程会一直阻塞直到有相关事件发生然后进行处理,由于线程是需要消耗系统资源的,当连接数量多的情况下,调用了大量线程,就会导致系统无法提供资源建立线程进行处理,导致服务器无法接受网络请求,在高并发情况下不适合使用BIO模式,不过他的编程方式比较简单,在并发量较低的情况下可以使用该模式。...原创 2019-06-15 20:41:01 · 179 阅读 · 0 评论 -
网络编程之NIO
网络编程只NIONIO是一种非阻塞同步模型,它的思想是一个线程处理一个请求,通过将所有连接存在一个多路复用器中,然后通过轮询这个多路复用器查看是否有连接发送了事件,当发现了有事件发生时(如IO操作),则调用线程来处理这个连接,相比BIO能处理的连接数大大提高,并且线程利用率也高了很多。这里要注意NIO底层是epoll实现的,相对于select有更大的优势。代码相关:我这里为了编程简单,体现N...原创 2019-06-15 23:09:02 · 111 阅读 · 0 评论 -
网络编程之AIO
网络编程只AIOAIO是一种异步非阻塞模式,它的思想是一个线程处理一个有效请求,当有连接请求时,由系统来通知应用程序处理请求完成连接,而不需要向NIO一样进行轮询,IO请求也是由系统进行处理,处理完成后通过回调机制通知应用程序直接调用这些数据,这里就是使用到了异步的思想。AIO适用于连接数量多并且连接时间长的场景。代码思路:建立一个线程池转化为AsynchronousChannelGrou...原创 2019-06-16 09:58:39 · 334 阅读 · 0 评论 -
网络编程之Netty
网络编程之NettyNetty是对网络编程接口的优化封装,使得开发难度降低,支持BIO和NIO模式,这里关于为什么没有使用AIO模式,是因为在Linux中NIO和AIO底层使用的都是系统的epoll方法,并且AIO还在该基础上增添了一层封装,性能上没有优势,而Netty主要是针对Linux服务器做开发的,所以使用了NIO。(在Windows的AIO和NIO却又较大区别,在性能上AIO比NIO更好...原创 2019-06-16 10:39:12 · 328 阅读 · 0 评论 -
Netty实现websocket
Netty实现websocket项目中有一个需求,就是能够让服务端主动向客户端发送通知信息,大致过程如下门柜设备开门成功 -》返回开门成功信息给服务端 -》服务端返回ACK确认 -》服务端同时通知小程序用户开锁成功信息…由于需要服务端主动向客户端发送信息,这里可以使用websocket来实现,下面就来实现一个基于websocket的服务器的基本建立过程(这里使用的时Netty,其基于NIO,...原创 2019-08-05 00:03:58 · 750 阅读 · 0 评论