服务端
package com.chen.test
import java.io.{InputStream, ObjectInputStream}
import java.net.{ServerSocket, Socket}
object Executor {
def main(args: Array[String]): Unit = {
//启动服务器,接收数据
val server = new ServerSocket(9999)
println("服务器启动,等待接收数据")
//等待客户端连接
val client: Socket = server.accept()
val in: InputStream = client.getInputStream
val objIn = new ObjectInputStream(in)
val task: Task = objIn.readObject().asInstanceOf[Task]
val ints: List[Int] = task.compute()
println("计算节点计算的结果为:" + ints)
objIn.close()
client.close()
server.close()
}
}
客户端
package com.chen.test
import java.io.{ObjectOutputStream, OutputStream}
import java.net.Socket
object Driver {
def main(args: Array[String]): Unit = {
//连接服务器
val client = new Socket("localhost", 9999)
val out: OutputStream = client.getOutputStream
val objOut = new ObjectOutputStream(out)
val task = new Task()
objOut.writeObject(task)
objOut.flush()
objOut.close()
client.close()
println("客户端数据发送完毕")
}
}
任务
package com.chen.test
class Task extends Serializable {
val datas = List(1, 2, 3, 4)
//val logic=(num:Int)=>{num*2}
val logic: (Int) => Int = _ * 2
//计算
def compute()={
datas.map(logic)
}
}
先执行Executor,再执行Driver