net: make socket.recv return the allocated buffer and the message length
parent
bf1ee28194
commit
0e39df24d4
|
@ -206,22 +206,19 @@ pub fn dial(address string, port int) ?Socket {
|
||||||
}
|
}
|
||||||
|
|
||||||
// send string data to socket
|
// send string data to socket
|
||||||
pub fn (s Socket) send(buf byteptr, len int) int {
|
pub fn (s Socket) send(buf byteptr, len int) int? {
|
||||||
res := C.send(s.sockfd, buf, len, 0)
|
res := int( C.send(s.sockfd, buf, len, 0) )
|
||||||
// if res < 0 {
|
if res < 0 {
|
||||||
// return error('socket: send failed')
|
return error('socket: send failed')
|
||||||
// }
|
}
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
// receive string data from socket
|
// receive string data from socket
|
||||||
pub fn (s Socket) recv(bufsize int) byteptr {
|
pub fn (s Socket) recv(bufsize int) (byteptr, int) {
|
||||||
buf := malloc(bufsize)
|
buf := malloc(bufsize)
|
||||||
res := C.recv(s.sockfd, buf, bufsize, 0)
|
res := int( C.recv(s.sockfd, buf, bufsize, 0) )
|
||||||
// if res < 0 {
|
return buf, res
|
||||||
// return error('socket: recv failed')
|
|
||||||
// }
|
|
||||||
return buf
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: remove cread/2 and crecv/2 when the Go net interface is done
|
// TODO: remove cread/2 and crecv/2 when the Go net interface is done
|
||||||
|
|
|
@ -17,9 +17,13 @@ fn test_socket() {
|
||||||
|
|
||||||
message := 'Hello World'
|
message := 'Hello World'
|
||||||
socket.send(message.str, message.len)
|
socket.send(message.str, message.len)
|
||||||
|
$if debug { println('message send: $message') }
|
||||||
|
$if debug { println('send socket: $socket.sockfd') }
|
||||||
|
|
||||||
bytes := client.recv(1024)
|
bytes, blen := client.recv(1024)
|
||||||
received := tos(bytes, message.len)
|
received := tos(bytes, blen)
|
||||||
|
$if debug { println('message received: $received') }
|
||||||
|
$if debug { println('client: $client.sockfd') }
|
||||||
|
|
||||||
assert message == received
|
assert message == received
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue