首页 > 作文

客户端Socket与服务端ServerSocket串联实现网络通信

更新时间:2023-04-06 02:40:42 阅读: 评论:0

引导语

上一小节我们学习了 socket,本文我们来看看服务端套接体检项目有哪些字 api:rversocket,本文学习完毕之后,我们就可以把客户端 socket 和服务端 rversocket 串联起来,做一个真实的网络通信的 demo 了。

1、类属性

rversocket 的主要作用,是作为服务端的套接字,接受客户端套接字传递过来的信息,并把响应回传给客户端,其属性非常简单,如下:

rversocket 和 socket 一样,底层都是依靠 socketimpl 的能力,而 socketimpl 底层能力的实现基本上都是 native 方法实现的。

2、初始化

初始化大概可以分成两类:无参构造器和有参构造器。

无参构造器做的事情比较简单,只指定了 socketimpl 为 sockssocketimpl 类;有参构造器有几种初始化的形式,我们一起来看一下参数最多的构造器的源码。

入参 port 指的是 rversocket 需要绑定本地那个端口。

入参 backlog 指的是服务端接受客户端连接队列的最大长度,这里需要注意的是,这里并不是限制客户端连接的个数,我们在 jdk8 6s管理心得体会与感悟版本下做过实验,我们把服务端的 backlog 设置成 1,并且变慢服务端的处理速度,当服务端并发请求过来时,并不是第二个请求过来就拒绝连接,我们在实际工作中,最好也不要用 backlog 来限制客户端连接的个数。

还有点需要注意的是 backlog 小于 1 时,backlog 会被设置成默认的 50。

入参 inetaddress 表示 ip吉林大学地址 地址。

3、bind

bind 方法主要作用是把 rversocket 绑定到本地的端口上,只有当我们使用无参构造器初始化 rversocket 时,才会用到这个方法,如果使用有参构造器的话,在初始化时就已经绑定到本地的端口上了。

配合无参构造器,一般我们这么用:

4、accept

accept 方法主要是用来 rversocket 接受来自客户端的套接字的,如果此时没有来自客户端的请求时,该方法就会一直阻塞,如果有通过 tsotimeout 方法设置超时时间,那么 accept 只会在超时间内阻塞,过了超时时间就会抛出异常。

bind 和 accept 方法底层都是 native 方法实现,我们就不看源码了。

5、面试题

5.1、说说你对 socket 和 rversocket 的理解?

答:两者我们都可以称为套接字,底层基于 tcp/udp 协议,套接字对底层协议进行了封装,让我们使用时更加方便,socket 常被使用在客户端,用于向服务端请求数据和接受响应,rversocket 常用于在服务端,用于接受客户端的请求并进行处理,两者其底层使用都是依靠 socketimpl 的子类的 native 方法。

5.2、说说对 socketoptions 中的 so_timeout 的理解?

答:socketoptions 类有很多属性设置,比如 so_timeout 、so_linger 等等,这些问题说一下自己的理解即可,可以参考 《socket 源码及面试题》 中对各种属性的解析。

5.3、在构造 socket 的时候,我可以选择 tcp 或 udp 么?应该如何选择?

答:可以的,socket 有三个参数的构造器,第三个参数表示你想使用 tcp 还是 udp。

5.4、tcp 有自动检测服务端是否存活的机制么?有没有更好的办法?

答:有的,我们可以通过 tkeepalive 方法来激活该功能,如果两小时内,客户端和服务端的套接字之间没有任何通信,tcp 会自动发送 keepalive 探测给服务端,预测服务端有三种情况:

服务端使用预期的 ack 回复,说明一切正常;服我国少数民族务端回复 rst,表示服务端处于死机或者重启状态,终止连接;没有得到服务端的响应(会尝试多次),表示套接字已经关闭了。

但我们并不建议使用这种方式,我们可以自己起一个定时任务,定时的访问服务端的特殊接口,如果服务端返回的数据和预期一致,说明服务端是存活的。

总结

socket 和 rversocket 在源码方顶真联面没啥特别可说的地方,基本都是一些设置,底层实现都是 native 的方法,但面试官会从此延伸到一些网络协议方面的知识,因为这已经超出本专栏的范畴了,感兴趣的同学可以自行百度。

以上就是客户端socket与服务端rversocket串联实现网络通信的详细内容,更多关于socket与rversocket串联实现网络通信的资料请关注www.887551.com其它相关文章!

本文发布于:2023-04-06 02:40:41,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/b0f68f57e420c82430e602dfc0d71013.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:客户端Socket与服务端ServerSocket串联实现网络通信.doc

本文 PDF 下载地址:客户端Socket与服务端ServerSocket串联实现网络通信.pdf

标签:服务端   客户端   都是   方法
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图