Exemplo n.º 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);
}
Exemplo n.º 2
0
int rtsmb_net_socket_new (RTP_SOCKET* sock_ptr, int port, BBOOL reliable)
{
    int result;

    if (reliable)
    {
        result = rtp_net_socket_stream(sock_ptr);
    }
    else
    {
        result = rtp_net_socket_datagram(sock_ptr);
    }

    if (result < 0)
    {
        RTSMB_DEBUG_OUTPUT_STR("rtsmb_net_socket_new: Unable to get new socket\n", RTSMB_DEBUG_TYPE_ASCII);
        return -1;
    }

    if (rtp_net_bind(*sock_ptr, (unsigned char*)0, port, 4))
    {
        RTSMB_DEBUG_OUTPUT_STR ("rtsmb_net_socket_new: bind to port ", RTSMB_DEBUG_TYPE_ASCII);
        RTSMB_DEBUG_OUTPUT_INT (port);
        RTSMB_DEBUG_OUTPUT_STR (" failed\n", RTSMB_DEBUG_TYPE_ASCII);
        return -1;
    }

    RTSMB_DEBUG_OUTPUT_STR ("rtsmb_net_socket_new: Socket ", RTSMB_DEBUG_TYPE_ASCII);
    RTSMB_DEBUG_OUTPUT_INT ((int) (*sock_ptr));
    RTSMB_DEBUG_OUTPUT_STR (" bound to port ", RTSMB_DEBUG_TYPE_ASCII);
    RTSMB_DEBUG_OUTPUT_INT (port);
    RTSMB_DEBUG_OUTPUT_STR ("\n", RTSMB_DEBUG_TYPE_ASCII);

    return 0;
}