2016-06-14 69 views
3

我正在Scala寫一個小型MUD風格的遊戲。我想讓用戶能夠遠程登錄遊戲(就像過去一樣)。這真的只是一場比賽。它將在私人網絡上運行。安全性尚未(考慮)。Scala中最簡單的一行一行的服務器套接字服務器?

「協議」由用戶發送的文本行(以CR結尾)組成。在等待下一行用戶輸入之前,服務器將用它自己的文本行進行回覆。實際上,這是一個REPL樣式的文本界面。

有沒有一個方便的圖書館,將爲我做網絡的東西?我只是想讓它打開一個端口,並允許用戶連接到服務,並開始發送和接收來自遊戲的文本。

有很多全功能的服務器庫(例如TwitterServer),它們似乎適用於Thrift和HTTP。我實際上是在更簡單的事情之後。我只想接收文本行,並用文本行迴應。

有關我如何能夠以最簡單的方式達到此目的的任何想法?

+0

更新:我也很想看看是否有一個超級簡單的WebSocket服務器的一個例子。 :-) –

+1

這個問題值得一看:https://stackoverflow.com/questions/6414942/scala-equivalent-of-python-echo-server-client-example – Brian

回答

5

在這裏你去:

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

在這種情況下,Whart是「服務」?我可以看到它是一個接受輸入流和輸出流的函數 - 但它返回或做什麼? –

+0

這是您的服務器實施。它讀取客戶端從'InputStream'發送的內容,並將任何想要響應的內容寫入'OutputStream'。 – Dima

+0

(in:Stream,out:Stream)=> {do stuff} –