48 lines
950 B
V
48 lines
950 B
V
import netio
|
|
|
|
fn main() {
|
|
ai := netio.translate_addr(
|
|
service: '1081'
|
|
sock_type: netio.sock_stream
|
|
family: netio.af_inet6
|
|
flags: netio.ai_passive
|
|
)!
|
|
|
|
mut socket := netio.Socket{}
|
|
mut listen_addr := netio.SocketAddr{}
|
|
|
|
for a in ai {
|
|
socket = netio.Socket.new(a.family, a.sock_type, a.protocol)!
|
|
socket.set_option(netio.ipproto_ipv6, netio.ipv6_v6only, 0)!
|
|
socket.bind(a.addr) or {
|
|
socket.close()!
|
|
continue
|
|
}
|
|
listen_addr = a.addr
|
|
break
|
|
}
|
|
|
|
defer {
|
|
socket.close() or { panic(err) }
|
|
}
|
|
|
|
socket.listen(10) or {
|
|
eprintln('LISTEN: ${err}')
|
|
exit(1)
|
|
}
|
|
|
|
println('Listening on ${listen_addr}...')
|
|
for {
|
|
conn, remote_addr := socket.accept() or {
|
|
eprintln('ACCEPT: ${err}')
|
|
exit(1)
|
|
}
|
|
eprintln(netio.translate_name(remote_addr,
|
|
flags: netio.ni_numerichost | netio.ni_numericserv
|
|
)!)
|
|
eprintln(netio.translate_name(remote_addr)!)
|
|
eprintln('Remote address: ${remote_addr}')
|
|
conn.close()!
|
|
}
|
|
}
|