格智教育关于socket编程的一点小干货
1.socket
实质爲完成两个进程之间的通讯
2.tcp和udp的区别
TCP:传输控制协议,面向衔接,牢靠。保证数据传输成功。(三次握手和四次分手)
UDP:不牢靠。传输速度快。占零碎资源少。
3.bio,nio和aio
BIO:是当发起I/O的读或写操作时,均爲阻塞方式,直到使用顺序读到了流或许将流
写入数据。
NIO:基于事情驱动思想,常采用reactor(反响器)形式。当发起 IO恳求时,使用顺
序是非阻塞的。当SOCKET有流可读或写的时分,由操作零碎告诉使用顺序,使用顺序
再将流读取到缓冲区或许写入零碎。
AIO:异样基于事情驱动的思想,通常采用Proactor(前摄器形式)完成。在停止I/O操作
时,间接调用API的read或write,这两种办法均爲异步。关于读操作,操作零碎将数据
读到缓冲区,并告诉使用顺序,关于写操作,操作零碎将write办法传递的流写入并自
动告诉使用顺序。它节省了NIO中遍历事情告诉队列的代价。
4.java nio
中心:Channels,Buffers,Selectors
Channel :一切的 IO 在NIO 中都从一个Channel 开端,Channel 有点象流。 数据可
以从Channel读到Buffer中,也可以从Buffer 写到Channel中。(FileChannel、
SocketChannel、ServerSocketChannel)
Buffers:实质上是一块用于读写的内存,包装成了缓冲区对象,你可以经过
allocateDirect()或许allocate()请求内存空间(allocate分配方式发生的内存开支是在
JVM中的,而allocateDirect的分配方式发生的开支在JVM之外,以就是零碎级的内存
分配,运用allocateDirect尤其留意内存溢出成绩),Buffer尤其需求了解三个概念,
capacity、position、limit,capacity是固定大小,position是以后读写地位,limit是
一个相似于门限的值,用于控制读写的最大的地位。Buffer的常用办法有clear、
compact、flip等等,还有比方Buffer的静态办法wrap等等,这些需求依据capacity、
position、limit的值停止了解。,(ByteBuffer,IntBuffer,LongBuffer等)
Selector:用于检测通道,我们经过它才晓得哪个通道发作了哪个事情,所以假如需求
用selector的话就需求首先停止register,然后遍历SelectionKey对事情停止处置。它
一共有SelectionKey.OP_CONNECT、SelectionKey.OP_ACCEPT、
SelectionKey.OP_READ、SelectionKey.OP_WRITE四种事情类型。
5.socket编程根本流程
bio:
效劳器端:
创立ServerSocket对象,绑定监听端口
经过accept()办法监听客户端恳求
衔接树立后,经过输出流读取客户端发送的恳求信息
经过输入流向客户端发送乡音信息
封闭相关资源
客户端:
创立Socket对象,指明需求衔接的效劳器的地址和端口号
衔接树立后,经过输入流想效劳器端发送恳求信息
经过输出流获取效劳器呼应的信息
封闭呼应资源
页:
[1]