/*----------------------------------------------------------------------* rtp_net_getifaceaddr *----------------------------------------------------------------------*/ int rtp_net_getifaceaddr (unsigned char *localAddr, unsigned char *remoteAddr, int remotePort, int remoteType) { RTP_SOCKET tempSock; int localPort; int localType; if (rtp_net_socket_datagram(&tempSock) >= 0) { /* determine the local IP address that is receiving this request by creating a temporary UDP socket and connecting it back to the sender; we then query the IP address of the temp socket using getsockname. */ if (rtp_net_connect(tempSock, remoteAddr, remotePort, remoteType) >= 0) { if (rtp_net_getsockname(tempSock, localAddr, &localPort, &localType) >= 0) { rtp_net_closesocket(tempSock); return (0); } } rtp_net_closesocket(tempSock); } return (-1); }
int RTIP_SOCKETS_Driver::Connect(SOCK_SOCKET socket, const SOCK_sockaddr* address, int addressLen) { NATIVE_PROFILE_PAL_NETWORK(); int ret; unsigned char * ipAddr; int port; ipAddr = (unsigned char *) &(((SOCK_sockaddr_in *) address)->sin_addr); port = ((SOCK_sockaddr_in *) address)->sin_port; ret = rtp_net_connect ((RTP_HANDLE) socket, ipAddr, port, RTP_NET_TYPE_IPV4); return ret; }