sendall()
This commit is contained in:
+15
-2
@@ -460,14 +460,27 @@ i32 sendUDPu8List(i32 using_socket, SocketAddress* to, u8List* message) {
|
|||||||
i32 sendUDPMessage(UDPServer* to, u8* message, u32 len) {
|
i32 sendUDPMessage(UDPServer* to, u8* message, u32 len) {
|
||||||
return sendto(to->server_socket, message, len, 0, (struct sockaddr *)&to->server_address, sizeof(struct sockaddr));
|
return sendto(to->server_socket, message, len, 0, (struct sockaddr *)&to->server_address, sizeof(struct sockaddr));
|
||||||
}
|
}
|
||||||
|
i32 sendall(i32 socket, void* buf, i32 len) {
|
||||||
|
u32 total_sent = 0;
|
||||||
|
i32 left_to_send = len;
|
||||||
|
i32 sent_this_round;
|
||||||
|
while(total_sent < len) {
|
||||||
|
sent_this_round = send(socket, buf+total_sent, left_to_send, 0);
|
||||||
|
if (sent_this_round == -1) { return -1; }
|
||||||
|
total_sent += sent_this_round;
|
||||||
|
left_to_send -= sent_this_round;
|
||||||
|
}
|
||||||
|
return total_sent;
|
||||||
|
}
|
||||||
|
|
||||||
i32 sendTCPMessage(NetworkMessage msg) {
|
i32 sendTCPMessage(NetworkMessage msg) {
|
||||||
assert(msg.use_socket);
|
assert(msg.use_socket);
|
||||||
assert(msg.socket_fd >= 0);
|
assert(msg.socket_fd >= 0);
|
||||||
u16 msg_len = htons(msg.bytes_len);
|
u16 msg_len = htons(msg.bytes_len);
|
||||||
i32 result = send(msg.socket_fd, (void*)&msg_len, 2, 0);
|
i32 result = sendall(msg.socket_fd, (void*)&msg_len, 2);
|
||||||
if (result == -1) {
|
if (result == -1) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
return send(msg.socket_fd, msg.bytes, msg.bytes_len, 0);
|
return sendall(msg.socket_fd, msg.bytes, msg.bytes_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user