mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
net: ipv6 support, merge unix+ip;[pack:x] attribute (#9904)
This commit is contained in:
40
examples/tcp_echo_server.v
Normal file
40
examples/tcp_echo_server.v
Normal file
@ -0,0 +1,40 @@
|
||||
import io
|
||||
import net
|
||||
|
||||
// This file shows how a basic TCP echo server can be implemented using
|
||||
// the net module. You can connect to the server by using netcat or telnet,
|
||||
// in separate shells, for example:
|
||||
// nc 127.0.0.1 12345
|
||||
// or
|
||||
// telnet 127.0.0.1 12345
|
||||
|
||||
fn main() {
|
||||
mut server := net.listen_tcp(.ip6, ':12345') ?
|
||||
laddr := server.addr() ?
|
||||
eprintln('Listen on $laddr ...')
|
||||
for {
|
||||
mut socket := server.accept() ?
|
||||
go handle_client(mut socket)
|
||||
}
|
||||
}
|
||||
|
||||
fn handle_client(mut socket net.TcpConn) {
|
||||
defer {
|
||||
socket.close() or { panic(err) }
|
||||
}
|
||||
client_addr := socket.peer_addr() or { return }
|
||||
eprintln('> new client: $client_addr')
|
||||
mut reader := io.new_buffered_reader(reader: socket)
|
||||
defer {
|
||||
reader.free()
|
||||
}
|
||||
socket.write_string('server: hello\n') or { return }
|
||||
for {
|
||||
received_line := reader.read_line() or { return }
|
||||
if received_line == '' {
|
||||
return
|
||||
}
|
||||
println('client $client_addr: $received_line')
|
||||
socket.write_string('server: $received_line\n') or { return }
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user