| 83 |  | closesocket(socket); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 84 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 85 |  |  | 
 
 
 
 
 
 
 
 
 
 
 | 86 | < | bool NetUDPSocket_Send(int socket, sockaddr* address, char* data, int datalen) | 
 
 
 
 
 
 
 
 
 | 86 | > | bool NetUDPSocket_Send(int socket, const sockaddr* address, const char* data, int datalen) | 
 
 
 
 
 
 
 
 
 
 
 | 87 |  | { | 
 
 
 
 
 
 
 
 
 
 
 | 88 | < | uint32_t addr_size; | 
 
 
 
 
 
 
 
 
 | 88 | > | int addr_size; | 
 
 
 
 
 
 
 
 
 
 
 | 89 |  | switch (address->sa_family) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 90 |  | { | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 91 |  | case AF_INET: | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 94 |  | case AF_INET6: | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 95 |  | addr_size = sizeof(sockaddr_in6); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 96 |  | break; | 
 
 
 
 
 
 
 
 | 97 | + | default: | 
 
 
 
 
 
 
 
 | 98 | + | addr_size = sizeof(sockaddr_storage); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 99 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 100 |  | return sendto(socket, data, datalen, 0, address, addr_size); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 101 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 102 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 103 |  | bool NetUDPSocket_Recieve(int socket, sockaddr_storage* address, char* data, uint16_t* datalen) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 104 |  | { | 
 
 
 
 
 
 
 
 
 
 
 | 105 | < | uint32_t msg_size = recvfrom(socket, data, 512, 0, address, sizeof(sockaddr_storage)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 105 | > | int address_size = sizeof(sockaddr_storage); | 
 
 
 
 
 | 106 | > | uint32_t msg_size = recvfrom(socket, data, 512, 0, (sockaddr*)address, &address_size); | 
 
 
 
 
 
 
 
 
 
 
 | 107 |  | if (msg_size == 0) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 108 |  | return false; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 109 |  | else |