Beispiel #1
0
/*----------------------------------------------------------------------*
                           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;

}