2021-02-02 09:36:51 +01:00
|
|
|
import os
|
|
|
|
import os.cmdline
|
|
|
|
import net
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
println('Usage: net_udp_server_and_client [-l] [-p 5000]')
|
|
|
|
println(' -l - act as a server and listen')
|
|
|
|
println(' -p XXXX - custom port number')
|
|
|
|
println('------------------------------------------')
|
|
|
|
is_server := '-l' in os.args
|
|
|
|
port := cmdline.option(os.args, '-p', '40001').int()
|
|
|
|
mut buf := []byte{len: 100}
|
|
|
|
if is_server {
|
|
|
|
println('UDP echo server, listening for udp packets on port: $port')
|
2021-06-13 22:53:38 +02:00
|
|
|
mut c := net.listen_udp(':$port') ?
|
2021-02-02 09:36:51 +01:00
|
|
|
for {
|
|
|
|
read, addr := c.read(mut buf) or { continue }
|
|
|
|
println('received $read bytes from $addr')
|
|
|
|
c.write_to(addr, buf[..read]) or {
|
|
|
|
println('Server: connection dropped')
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
println('UDP client, sending packets to port: ${port}.\nType `exit` to exit.')
|
2021-06-13 22:53:38 +02:00
|
|
|
mut c := net.dial_udp('localhost:$port') ?
|
2021-02-02 09:36:51 +01:00
|
|
|
for {
|
|
|
|
mut line := os.input('client > ')
|
|
|
|
match line {
|
|
|
|
'' {
|
|
|
|
line = '\n'
|
|
|
|
}
|
|
|
|
'exit' {
|
|
|
|
println('goodbye.')
|
|
|
|
exit(0)
|
|
|
|
}
|
|
|
|
else {}
|
|
|
|
}
|
2021-03-20 17:25:51 +01:00
|
|
|
c.write_string(line) ?
|
2021-02-02 09:36:51 +01:00
|
|
|
read, _ := c.read(mut buf) ?
|
|
|
|
println('server : ' + buf[0..read].bytestr())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|