MCPcopy Create free account
hub / github.com/brainflow-dev/brainflow / get_local_ip_addr

Method get_local_ip_addr

src/utils/socket_client_udp.cpp:15–91  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13
14
15int SocketClientUDP::get_local_ip_addr (const char *connect_ip, int port, char *local_ip)
16{
17 WSADATA wsadata;
18 int return_value = (int)SocketClientUDPReturnCodes::STATUS_OK;
19 struct sockaddr_in serv;
20 char buffer[80];
21 SOCKET sock = INVALID_SOCKET;
22 struct sockaddr_in name;
23 bool wsa_initialized = false;
24 int res = WSAStartup (MAKEWORD (2, 2), &wsadata);
25 if (res != 0)
26 {
27 return_value = (int)SocketClientUDPReturnCodes::WSA_STARTUP_ERROR;
28 }
29 else
30 {
31 wsa_initialized = true;
32 }
33
34 if (return_value == (int)SocketClientUDPReturnCodes::STATUS_OK)
35 {
36 sock = socket (AF_INET, SOCK_DGRAM, 0);
37 if (sock == INVALID_SOCKET)
38 {
39 return_value = (int)SocketClientUDPReturnCodes::CREATE_SOCKET_ERROR;
40 }
41 }
42
43 if (return_value == (int)SocketClientUDPReturnCodes::STATUS_OK)
44 {
45 memset (&serv, 0, sizeof (serv));
46 serv.sin_family = AF_INET;
47 if (inet_pton (AF_INET, connect_ip, &serv.sin_addr) == 0)
48 {
49 return_value = (int)SocketClientUDPReturnCodes::PTON_ERROR;
50 }
51 serv.sin_port = htons (port);
52 }
53
54 if (return_value == (int)SocketClientUDPReturnCodes::STATUS_OK)
55 {
56 if (::connect (sock, (const struct sockaddr *)&serv, sizeof (serv)) == SOCKET_ERROR)
57 {
58 return_value = (int)SocketClientUDPReturnCodes::CONNECT_ERROR;
59 }
60 }
61
62 if (return_value == (int)SocketClientUDPReturnCodes::STATUS_OK)
63 {
64 int name_len = sizeof (name);
65 int err = getsockname (sock, (struct sockaddr *)&name, &name_len);
66 if (err != 0)
67 {
68 return_value = (int)SocketClientUDPReturnCodes::CONNECT_ERROR;
69 }
70 }
71
72 if (return_value == (int)SocketClientUDPReturnCodes::STATUS_OK)

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected