【问题标题】:A simplest possible line-by-line server socket server in Scala?Scala中最简单的逐行服务器套接字服务器?
【发布时间】:2023-03-21 04:27:01
【问题描述】:

我正在用 Scala 编写一个小型 MUD 风格的游戏。我想允许用户远程登录游戏(就像过去一样)。这真的只是一个游戏。它将在专用网络上运行。安全性(还)不是一个考虑因素。

“协议”由用户发送的文本行(以 CR 结尾)组成。在等待用户输入的下一行之前,服务器将回复它自己的文本行。实际上这是一个 REPL 风格的文本界面。

是否有一个方便的库可以为我完成网络工作?我只是希望它打开一个端口并允许用户连接到服务并开始发送和接收来自游戏的文本。

有很多功能齐全的服务器库(例如 TwitterServer)似乎面向 Thrift 和 HTTP。我实际上是在追求更简单的东西。我只想接收文本行,并用文本行响应。

关于我如何能够以尽可能简单的方式实现这一目标的任何想法?

【问题讨论】:

标签: scala sockets


【解决方案1】:

给你:

  val acceptor = new ServerSocket(port)
  while(true) {
    val socket = acceptor.accept
    Future { serve(socket.getInputStream, socket.getOutputStream) } onComplete { socket.close() }
  } 

【讨论】:

  • 在这种情况下,什么是“服务”?我可以看到它是一个接受输入流和输出流的函数 - 但它返回或做什么?
  • 这是你的服务器实现。它读取客户端从InputStream 发送的内容,并将它想要响应的任何内容写入OutputStream
  • (in:Stream, out:Stream)=>{做事}
  • @SalimFadhley 你明白了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-31
  • 2011-06-11
相关资源
最近更新 更多