mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
45 lines
1.1 KiB
V
45 lines
1.1 KiB
V
|
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')
|
||
|
mut c := net.listen_udp(port) ?
|
||
|
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.')
|
||
|
mut c := net.dial_udp('localhost', 'localhost:$port') ?
|
||
|
for {
|
||
|
mut line := os.input('client > ')
|
||
|
match line {
|
||
|
'' {
|
||
|
line = '\n'
|
||
|
}
|
||
|
'exit' {
|
||
|
println('goodbye.')
|
||
|
exit(0)
|
||
|
}
|
||
|
else {}
|
||
|
}
|
||
|
c.write_str(line) ?
|
||
|
read, _ := c.read(mut buf) ?
|
||
|
println('server : ' + buf[0..read].bytestr())
|
||
|
}
|
||
|
}
|
||
|
}
|