欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java Socket,

来源: javaer 分享于  点击 34779 次 点评:143

Java Socket,


Socket:基于TCP/IP的流套接字。
1,建立通信链路
(1))客户端创建Socket实例(包含本地地址,远程地址和端口号)(要经历TCP的三次握手后才算创建成功),创建失败抛出IOException
(2))服务端创建一个ServerSocke实例(只要端口号未被占用则一般就成功,在创建同时操作系统会为其配一个底层数据结构来包含指定监听的端口号和包含监听地址的通配符“*”,表示监听所有地址),创建完之后调用accept()进入阻塞等待客户端请求。
(3))当服务端接到一个新的请求时,服务端会为其创建一个新的套接字数据结构(包含请求的原地址和端口),并把这个数据结构关联到ServerSocket实例的一个未完成连接数据结构的列表中,等到与客户端进行3次握手后,这个服务端的Socket实例才会成功返回,才会将其从未完成列表中已到已完成列表中。
2,数据传输:
如上所述,当连接成功后,服务端和客户端都有一个socket实例,并且每个Socket都有一个InputStream和OutputStream用于交换数据。
数据传输过程:系统会在创建Socket对象时给InputStream和OutputStream分配缓存区,写入端将数据写入到OutputStream对应的SendQ队列中,该队列满时则会把数据转移到另一端的InputStream的RecvQ队列中,若RecvQ满了,则OutputStream的write方法会阻塞,直到RecvQ有足够空间容纳SendQ发送的数据。

相关文章

    暂无相关文章
相关栏目:

用户点评