Echo server: Difference between revisions

Line 1,931:
</lang>
 
=={{header|Scala}}==
<lang scala>import java.io.PrintWriter
import java.net.{ServerSocket, Socket}
 
import scala.io.BufferedSource
 
object EchoServer extends App {
private val serverSocket = new ServerSocket(23)
private var numConnections = 0
 
class ClientHandler(clientSocket: Socket) extends Runnable {
 
private val connectionId: Int = {
numConnections += 1
numConnections
}
 
override def run(): Unit =
new PrintWriter(clientSocket.getOutputStream, true) {
new BufferedSource(clientSocket.getInputStream).getLines
.takeWhile(!_.toLowerCase.startsWith(":exit"))
.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()
}</lang>
=={{header|Scheme}}==
{{works with|Guile}}
Anonymous user