| 100 | } |
| 101 | |
| 102 | int SocketClientUDP::connect () |
| 103 | { |
| 104 | if (wsa_initialized) |
| 105 | { |
| 106 | return (int)SocketClientUDPReturnCodes::SOCKET_ALREADY_CREATED_ERROR; |
| 107 | } |
| 108 | WSADATA wsadata; |
| 109 | int res = WSAStartup (MAKEWORD (2, 2), &wsadata); |
| 110 | if (res != 0) |
| 111 | { |
| 112 | return (int)SocketClientUDPReturnCodes::WSA_STARTUP_ERROR; |
| 113 | } |
| 114 | wsa_initialized = true; |
| 115 | socket_addr.sin_family = AF_INET; |
| 116 | socket_addr.sin_port = htons (port); |
| 117 | if (inet_pton (AF_INET, ip_addr, &socket_addr.sin_addr) == 0) |
| 118 | { |
| 119 | return (int)SocketClientUDPReturnCodes::PTON_ERROR; |
| 120 | } |
| 121 | connect_socket = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP); |
| 122 | if (connect_socket == INVALID_SOCKET) |
| 123 | { |
| 124 | return (int)SocketClientUDPReturnCodes::CREATE_SOCKET_ERROR; |
| 125 | } |
| 126 | |
| 127 | // ensure that library will not hang in blocking recv/send call |
| 128 | DWORD timeout = 5000; |
| 129 | setsockopt (connect_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof (timeout)); |
| 130 | setsockopt (connect_socket, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof (timeout)); |
| 131 | |
| 132 | return (int)SocketClientUDPReturnCodes::STATUS_OK; |
| 133 | } |
| 134 | |
| 135 | int SocketClientUDP::set_timeout (int num_seconds) |
| 136 | { |
nothing calls this directly
no outgoing calls
no test coverage detected