June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
30
Task/Echo-server/Scala/echo-server.scala
Normal file
30
Task/Echo-server/Scala/echo-server.scala
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
import java.io.PrintWriter
|
||||
import java.net.{ServerSocket, Socket}
|
||||
|
||||
import scala.io.Source
|
||||
|
||||
object EchoServer extends App {
|
||||
private val serverSocket = new ServerSocket(23)
|
||||
private var numConnections = 0
|
||||
|
||||
class ClientHandler(clientSocket: Socket) extends Runnable {
|
||||
private val (connectionId, closeCmd) = ({numConnections += 1; numConnections}, ":exit")
|
||||
|
||||
override def run(): Unit =
|
||||
new PrintWriter(clientSocket.getOutputStream, true) {
|
||||
println(s"Connection opened, close with entering '$closeCmd'.")
|
||||
Source.fromInputStream(clientSocket.getInputStream).getLines
|
||||
.takeWhile(!_.toLowerCase.startsWith(closeCmd))
|
||||
.foreach { line =>
|
||||
Console.println(s"Received on #$connectionId: $line")
|
||||
println(line) // Echo
|
||||
}
|
||||
Console.println(s"Gracefully closing connection, #$connectionId")
|
||||
clientSocket.close()
|
||||
}
|
||||
|
||||
println(s"Handling connection, $connectionId")
|
||||
}
|
||||
|
||||
while (true) new Thread(new ClientHandler(serverSocket.accept())).start()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue