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:
@@ -7,6 +7,10 @@ fn main() {
|
||||
defer {
|
||||
conn.close() or {}
|
||||
}
|
||||
|
||||
println(' peer: $conn.peer_addr()')
|
||||
println('local: $conn.addr()')
|
||||
|
||||
// Simple http HEAD request for a file
|
||||
conn.write_string('HEAD /index.html HTTP/1.0\r\n\r\n') ?
|
||||
// Read all the data that is waiting
|
||||
|
||||
24
examples/net_resolve.v
Normal file
24
examples/net_resolve.v
Normal file
@@ -0,0 +1,24 @@
|
||||
import net
|
||||
|
||||
for addr in [
|
||||
'vlang.io:80',
|
||||
'google.com:80',
|
||||
'steampowered.com:80',
|
||||
'api.steampowered.com:80',
|
||||
] {
|
||||
println('$addr')
|
||||
|
||||
for @type in [net.SocketType.tcp, .udp] {
|
||||
family := net.AddrFamily.unspec
|
||||
|
||||
addrs := net.resolve_addrs(addr, family, @type) or {
|
||||
println('> None')
|
||||
continue
|
||||
}
|
||||
|
||||
for a in addrs {
|
||||
f := a.family()
|
||||
println('> $a $f ${@type}')
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,7 @@ fn main() {
|
||||
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) ?
|
||||
mut c := net.listen_udp(':$port') ?
|
||||
for {
|
||||
read, addr := c.read(mut buf) or { continue }
|
||||
println('received $read bytes from $addr')
|
||||
@@ -23,7 +23,7 @@ fn main() {
|
||||
}
|
||||
} else {
|
||||
println('UDP client, sending packets to port: ${port}.\nType `exit` to exit.')
|
||||
mut c := net.dial_udp('localhost', 'localhost:$port') ?
|
||||
mut c := net.dial_udp('localhost:$port') ?
|
||||
for {
|
||||
mut line := os.input('client > ')
|
||||
match line {
|
||||
|
||||
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 }
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,7 @@ fn main() {
|
||||
}
|
||||
|
||||
fn start_server() ? {
|
||||
mut s := websocket.new_server(30000, '')
|
||||
mut s := websocket.new_server(.ip6, 30000, '')
|
||||
// Make that in execution test time give time to execute at least one time
|
||||
s.ping_interval = 100
|
||||
s.on_connect(fn (mut s websocket.ServerClient) ?bool {
|
||||
|
||||
@@ -13,7 +13,7 @@ fn main() {
|
||||
}
|
||||
|
||||
fn start_server() ? {
|
||||
mut s := websocket.new_server(30000, '')
|
||||
mut s := websocket.new_server(.ip6, 30000, '')
|
||||
// Make that in execution test time give time to execute at least one time
|
||||
s.ping_interval = 100
|
||||
s.on_connect(fn (mut s websocket.ServerClient) ?bool {
|
||||
|
||||
Reference in New Issue
Block a user