频道栏目
首页 > 程序开发 > 软件开发 > java教程 > java高级教程 > 正文
基于Scala实现Socket和Server Socket代码
2018-04-26 09:32:11         来源:Null的博客  
收藏   我要投稿
package MyResourceAndMyNodeManager

import java.io.{ObjectInputStream, ObjectOutputStream}
import java.net.{ServerSocket, Socket}

object MyResourceManager {

  def handlerRegisterMsg(username: String, password: String): ResultMsg = {
    //对消息的处理
    println("username: " + username + "password: " + password)
    ResultMsg(1, "注册成功!!")
  }

  def handlerHeartbeat(hostname: String): ResultMsg = {
    println(hostname + "当前的时间:" + System.currentTimeMillis())
    ResultMsg(1, "心跳成功成功!!")
  }


  def main(args: Array[String]): Unit = {
    val serverSocket: ServerSocket = new ServerSocket(8888)
    val clientSocket: Socket = serverSocket.accept()

    val inputStream = new ObjectInputStream(clientSocket.getInputStream)

    val outputStream = new ObjectOutputStream(clientSocket.getOutputStream)


    while (true) {
      val clientMsg = inputStream.readObject()
      val result = clientMsg match {
        case RegisterMsg(username, password) => {
          //处理注册消息
          handlerRegisterMsg(username, password)
        }

        //
        case HeatBeart(hostname) => {
          handlerHeartbeat(hostname);
        }
      }
      //服务端要向客户端发送 结果消息
      outputStream.writeObject(result)
      outputStream.flush()
    }
  }
}
package MyResourceAndMyNodeManager

import java.io.{ObjectInputStream, ObjectOutputStream}
import java.net.Socket

object MyNodeManager {
  def main(args: Array[String]): Unit = {
    val socket = new Socket("127.0.0.1", 8888)

    val outputStream = new ObjectOutputStream(socket.getOutputStream)

    val inputStream = new ObjectInputStream(socket.getInputStream)

    outputStream.writeObject(RegisterMsg("malaoshi", "malaoshi123"))
    outputStream.flush()

    //接收服务端传送来的消息
    val resultMsg = inputStream.readObject()
    println(" 我是客户端,我接收到了服务端传送过来的消息" + resultMsg)

    //向服务端发送心跳
    outputStream.writeObject(HeatBeart("hadoop1"))
    outputStream.flush()

    //接收服务端传送来的消息
    val resultMsg2 = inputStream.readObject()
    println(" 我是客户端,我接收到了服务端传送过来心跳的结果" + resultMsg2)

    outputStream.close()
    inputStream.close()
    socket.close()

  }
}


点击复制链接 与好友分享!回本站首页
上一篇:Java面向对象:重写与重载之间的区别
下一篇:最后一页
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站