Echo server: Difference between revisions

Added Kotlin
(Added Kotlin)
Line 1,330:
 
server.listen(12321, "localhost");</lang>
 
 
=={{header|Kotlin}}==
{{trans|Java}}
<lang scala>// version 1.1.3
 
import java.io.BufferedReader
import java.io.PrintWriter
import java.io.InputStreamReader
import java.net.ServerSocket
import java.net.Socket
 
class ClientHandler(val clientSocket: Socket): Runnable {
private val connectionId: Int
 
init {
connectionId = ++numConnections
println("Handling connection, #$connectionId")
}
 
override fun run() {
val pw = PrintWriter(clientSocket.outputStream, true)
val br = BufferedReader(InputStreamReader(clientSocket.inputStream))
while (true) {
val line = br.readLine()
if (line == null) break
println("Received: $line")
pw.write("$line\n")
pw.flush()
if (line == "exit") break
}
br.close()
pw.close()
clientSocket.close()
println("Closing connection, #$connectionId")
}
 
private companion object {
var numConnections = 0
}
}
 
fun main(args: Array<String>) {
val serverSocket = ServerSocket(12321)
try {
while (true) {
Thread(ClientHandler(serverSocket.accept())).start()
}
}
finally {
serverSocket.close()
println("Closing server socket")
}
}</lang>
 
{{out}}
Quick test using telnet:
<pre>telnet localhost 12321
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Hello
Hello
Goodbye
Goodbye
exit
exit
Connection closed by foreign host.</pre>
 
Echo server window (closing with ^C):
<pre>Handling connection, #1
Received: Hello
Received: Goodbye
Received: exit
Closing connection, #1
^C</pre>
 
=={{header|LFE}}==
9,485

edits