blob: d43be99c064772cb8d2ac8385bcb812084a3ee71 [file] [log] [blame]
## examples/echo_server.av
## A simple echo server in aviatorscript
let io = require('io');
use java.net.ServerSocket;
fn process_conn(socket) {
let client_addr = getRemoteSocketAddress(socket);
p("Accepted a connection from #{client_addr}");
let reader = nil;
try{
let out = getOutputStream(socket);
reader = io.reader(getInputStream(socket));
for line in io.line_seq(reader) {
if line == "exit" {
println(out, 'bye ^_^');
break;
}
println(out, line);
}
}catch(e){
pst(e);
}finally{
io.close(reader);
io.close(socket);
p("Closed a connection from #{client_addr}");
}
}
let port = count(ARGV) >= 1? long(ARGV[0]) : 8080;
let server =new ServerSocket(port);
p("Echo server listen at #{port}");
let socket = nil;
while (socket =accept(server)) != nil {
let t = new Thread(lambda () ->
process_conn(socket);
end);
start(t);
}