Java网络通信编程基础

本文介绍了Java网络通信的基础,包括Socket工作原理、连接过程,以及传统BIO编程模型。深入讲解了BIO、NIO、AIO的区别,强调了阻塞与非阻塞、同步与异步的概念。此外,还探讨了NIO的Buffer、Channel和Selector,并提及了Netty框架在处理网络通信中的优势和应用。
摘要由CSDN通过智能技术生成

1、Socket

        Socket又称“套接字”,应用程序通过“套接字”向网络发出请求或者应答网络请求。

        Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,不因为在服务器端或客户端而产生不同级别。不管是Socket还是ServerSocket,它们的工作都是通过SocketImpl类及其子类完成的。

 

2、Socket连接过程

        服务器监听:是服务端套接字,并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。

        客户端请求服务器:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

        服务器端连接确认:当服务器端套接字监听或者说接受到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务端的套接字的描述发给客户端。

        客户端连接确认:一旦客户端确认了此描述,连接就建立好了,双方开始进行通信。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

 

3、传统的BIO编程

        网络编程的基本模型是Client/Server模型,也就是两个进程直接进行相互通信,其中服务端提供配置信息(绑定的IP地址和监听端口),客户端通过连接操作向服务器端监听的地址发起连接请求,通过三次握手建立连接,如果连接成功,则双方即可以进行通信(网络套接字Socket)。(需要为每个连接维护一个线程)

 

4、伪异步IO

        采用线程池和任务队列可以实现一种伪异步的IO通信框架

        将客户端的socket封装成一个task任务(实现runnable接口的类),然后投递到线程池中去,配置相应的队列进行实现。

 

5、BIO、NIO、AIO的区别

        BIO为同步阻塞形式,NIO为同步非阻塞形式,NIO没有实现异步,在JDK1.7之后,升级了NIO库包,支持异步非阻塞通信模型,即NIO2.0(AIO)

        三种IO的总结:http://blog.csdn.net/wanzaixiaoxinjiayou/article/details/43274597

 

6、阻塞与非阻塞

        阻塞概念:应用程序在获取网络数据的时候,如果网络传输速度很慢,那么程序就一直等着,直到传输完毕为止。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值