基于Java NIO实现一个客户端和服务端通信的一个流程 客户端通过发送获取当前时间的命令,服务端给出回应。
Java的NIO编程 的确比Java阻塞的IO编程复杂很多 但是对性能的提高是很明显的,今天就是想把JavaNIO熟悉一下以便后续的研究Netty,这样会更好点.
服务端主函数:服务端逻辑代码:客户端主函数:客户端逻辑代码:
总结:
IO和NIO 也就是阻塞和非阻塞,那么其实在我们实验的过程中因为条件的原因可能感受不到性能的差距,但是真正到了应用的场景,尤其是在并发量很高的情况下,那么NIO的优势也就体现出来了,其实不管是IO还是NIO java一般的读取操作都是通过建立一个缓冲区 然后往缓冲区写或者从缓冲区读。因为读写都是异步的,因为异步是立马返回,不管有没有读到数据,所以我们要根据读的结果来进行相应的处理,如果返回值大于0那么说明读到了数据,所以就可以进行处理;如果返回值小于0,那么说明对端已经关闭了连接,此时也就关闭连接,那么先发起关闭连接的会有time_wait的状态,会等待2个MSL时间,如果返回0那说明读到了0个数据,可以不进行处理。