用Scala模拟RPC通信
来源:互联网 发布:淘宝店铺客服电话 编辑:程序博客网 时间:2024/06/03 13:09
模拟场景:有两台服务器server和client,模拟server和client间的rpc通信。首先启动server, client上线后向server发送注册信息。如果注册成功,server返回注册成功的信息给client,client每隔3秒开始向server发送“心跳数据”;如果注册失败,server返回注册失败的信息给client。
代码实现:
1.创建样例类Regist、Registed、HeartBeat
package main.scala.rpc/** * 样例类,用来服务端与客户端传递信息 *///注册信息case class Regist(hostname:String,password:String) //注册返回信息case class Registed(registed:Boolean)//心跳数据case class HeartBeat(information:String)
2.服务端
package main.scala.rpcimport java.io.{ObjectInputStream, ObjectOutputStream}import java.net.ServerSocket/** * 服务端 */object Server{ def main(args: Array[String]): Unit = { var server = new ServerSocket(9999) //监听客户端请求 val socket = server.accept() val in = new ObjectInputStream(socket.getInputStream) val out = new ObjectOutputStream(socket.getOutputStream) while(true){ val input = in.readObject() //对客户端发来的信息进行模式匹配 input match{ case Regist("hadoop","hadoop")=>out.writeObject(Registed(true))//接收到正确注册信息,将注册成功的信息返回客户端 case x:HeartBeat=>println(x.information)//接收到心跳信息,将心跳信息打印到控制台 case _=>out.writeObject(Registed(false))//客户端注册失败,将失败信息返回客户端 } } server.close() }}
3.客户端
package main.scala.rpcimport java.io.{ObjectInputStream, ObjectOutputStream}import java.net.Socket/** * 客户端 */object Client { def main(args: Array[String]): Unit = { //创建socket val socket = new Socket("127.0.0.1",9999) val out = new ObjectOutputStream(socket.getOutputStream) val in = new ObjectInputStream(socket.getInputStream) //发送注册信息 out.writeObject(Regist("hadoop","hadoop")) //接收服务端信息 val input = in.readObject() //对接收到的信息进行模式匹配 input match{ case Registed(true)=>println("登录成功");send(out) case Registed(false)=>println("登录失败") } socket.close() } /** *发送心跳数据,每隔3秒发一次 */ def send(out: ObjectOutputStream): Unit ={ while(true) { out.writeObject(HeartBeat("心跳数据")) Thread.sleep(3000) } }}
阅读全文
1 0
- 用Scala模拟RPC通信
- 使用Scala模拟简单的RPC通信,Socket编程
- scala 实现简单的RPC通信流程
- 使用scala实现Akka底层的rpc通信
- 基于hadoop2.7.2 api代码简单模拟rpc通信
- rpc通信
- RPC通信--定义RPC接口
- 用Scala模拟Spark集群启动过程
- dubbo本地模拟RPC
- RPC 与 Socket 通信
- RPC&Socket通信
- RPC 与 Socket 通信
- Hadoop RPC通信原理
- RPC通信功能实现
- python 实现 RPC 通信
- 集群RPC通信
- openstack中的rpc通信
- **通信-RPC模型**
- Android电话通信机制之一——RIL类分析
- HDU-寻找大富翁
- 读properties和写properties文件
- 工具
- 大、小端机器判断
- 用Scala模拟RPC通信
- 2017/7/27 离线赛
- Spark 2.0 DataFrame map操作中Unable to find encoder for type stored in a Dataset.问题的分析与解决
- 51nod 1189 阶乘分数
- 错误与调试
- 再次整理Ubuntu下多个jdk版本切换的问题
- 斐波那契数列-实现1
- 实现安卓主页面代码
- Java二叉搜索树(Binary Search Tree)实现