1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

net.socket: windows fixes and test

* added missing ai_canonname in addrinfo structure
* ai_canonname, ai_addr and ai_addrlen must be zeroed before getaddrinfo call
* write() must not be used on windows sockets
* added (Socket).get_port() function which is useful when socket was initialized with 0 (random) port
* tests is fixed, test server started listening on random port to avoid conflicts
This commit is contained in:
vitalyster
2019-09-20 17:04:39 +03:00
committed by Alexander Medvednikov
parent f1bb25bfaf
commit a42b4e219c
2 changed files with 40 additions and 29 deletions

View File

@ -1,30 +1,29 @@
import net
fn test_socket() {
// server := net.listen(8080) or {
// println(err)
// return
// }
// println(server)
// client := net.dial('127.0.0.1', 8080) or {
// println(err)
// return
// }
// println(client)
// socket := server.accept() or {
// println(err)
// return
// }
// println(socket)
//
// message := 'Hello World'
// socket.send(message.str, message.len)
// println('Sent: ' + message)
//
// bytes := client.recv(1024)
// println('Received: ' + tos(bytes, message.len))
//
// server.close()
// client.close()
// socket.close()
mut server := net.listen(0) or {
println(err)
return
}
server_port := server.get_port()
mut client := net.dial('127.0.0.1', server_port) or {
println(err)
return
}
mut socket := server.accept() or {
println(err)
return
}
message := 'Hello World'
socket.send(message.str, message.len)
bytes := client.recv(1024)
received := tos(bytes, message.len)
assert message == received
server.close()
client.close()
socket.close()
}