设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 806|回复: 0
收起左侧

格智教育关于socket编程的一点小干货

[复制链接]
发表于 2018-5-15 10:36:12 | 显示全部楼层 |阅读模式


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对象,指明需求衔接的效劳器的地址和端口号
衔接树立后,经过输入流想效劳器端发送恳求信息
经过输出流获取效劳器呼应的信息
封闭呼应资源


您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2024-3-29 18:11 , Processed in 0.060502 second(s), 8 queries , Redis On.  

  Powered by Discuz!

  © 2001-2024 HH010.COM

快速回复 返回顶部 返回列表