Exemple #1
0
int http_server_demo(void)
{
	HTTP_INT16 ipType = 4;
	rtp_net_init();
	rtp_threads_init();


	rtp_memset(&ExampleServerCtx, 0, sizeof(ExampleServerCtx));
	rtp_strcpy(ExampleServerCtx.rootDirectory, DEMO_WWW_ROOT);
	ExampleServerCtx.chunkedEncoding 		= 0;
	ExampleServerCtx.numHelperThreads 		= DEMO_MAX_HELPERS;
	ExampleServerCtx.numConnections		 	= DEMO_MAX_CONNECTIONS;
	rtp_strcpy(ExampleServerCtx.defaultFile,"index.htm");
	ExampleServerCtx.defaultIpAddr[0] = DEFAULT_DEMO_IPADDRESS[0];
	ExampleServerCtx.defaultIpAddr[1] = DEFAULT_DEMO_IPADDRESS[1];
	ExampleServerCtx.defaultIpAddr[2] = DEFAULT_DEMO_IPADDRESS[2];
	ExampleServerCtx.defaultIpAddr[3] = DEFAULT_DEMO_IPADDRESS[3];
	rtp_sprintf(ExampleServerCtx.defaultIpAddrstr, "%d.%d.%d.%d",
	ExampleServerCtx.defaultIpAddr[0],	ExampleServerCtx.defaultIpAddr[1],
	ExampleServerCtx.defaultIpAddr[2],	ExampleServerCtx.defaultIpAddr[3]);


	/* Initialize the server */
	if (http_server_demo_restart() != 0)
		return(-1);


	for (;;)
	{
		HTTP_ServerProcessOneRequest (&ExampleServerCtx.httpServer, 1000*60);
		if (ExampleServerCtx.timeToReload)
		{
			ExampleServerCtx.timeToReload = 0;
			HTTP_ServerDestroy(&ExampleServerCtx.httpServer, &ExampleServerCtx.connectCtxArray);
			rtp_free(ExampleServerCtx.connectCtxArray);
			/* Initialize the server */
			if (http_server_demo_restart() != 0)
				return(-1);
		}
	}


	rtp_net_exit();
	return (0);

}
Exemple #2
0
int http_client_demo(void)
{
	int idle_count = 0,command;
	rtp_net_init();
	rtp_threads_init();

	while ((command = prompt_for_command()) != COMMAND_QUIT)
	{
	HTTPManagedClient httpClient;
		if (http_client_init(&httpClient) < 0)
			return(-1);
		if (command == COMMAND_GET)
			http_client_get(&httpClient,0);
		else if (command == COMMAND_GETTO_FILE)
			http_client_get(&httpClient,1);
		else if (command == COMMAND_POST)
			http_client_post(&httpClient);
		else if (command == COMMAND_PUT)
			http_client_put(&httpClient);
	}
	rtp_net_exit();
	return (0);

}
BOOL RTIP_SOCKETS_Driver::Initialize()
{
    NATIVE_PROFILE_PAL_NETWORK();
    IFACE_INFO info;

    memset(g_RTIP_SOCKETS_Driver.m_interfaces, 0, sizeof(g_RTIP_SOCKETS_Driver.m_interfaces));

    /* Initialize the network stack   */
    if (rtp_net_init() != 0)
    {
        DEBUG_HANDLE_SOCKET_ERROR("rtp_net_init", TRUE);
        return FALSE;
    }

#if defined(NETWORK_USE_LOOPBACK)
    // Bind and Open the loopback driver
    g_LOOPBACK_Driver.Bind();
    
    if (g_LOOPBACK_Driver.Open() == SOCK_SOCKET_ERROR)
    {
        DEBUG_HANDLE_SOCKET_ERROR("loopback init", FALSE);
    }
#endif        

    for(int i=0; i<g_NetworkConfig.NetworkInterfaceCount; i++)
    {
        int interfaceNumber;
        
        SOCK_NetworkConfiguration *pNetCfg = &g_NetworkConfig.NetworkInterfaces[i];

        Network_Interface_Bind(i);

        interfaceNumber = Network_Interface_Open(i);
        
        if (interfaceNumber == SOCK_SOCKET_ERROR)
        {
            DEBUG_HANDLE_SOCKET_ERROR("Network init", FALSE);
            debug_printf("SocketError: %d\n", xn_getlasterror());
            continue;
        }

        g_RTIP_SOCKETS_Driver.m_interfaces[i].m_interfaceNumber = interfaceNumber;

        
        UpdateAdapterConfiguration(i, SOCK_NETWORKCONFIGURATION_UPDATE_DHCP | SOCK_NETWORKCONFIGURATION_UPDATE_DNS, pNetCfg);

        // default debugger interface
        if(0 == i)
        {
            // add multicast addresses to the routing table
            UINT32 mcast1 = SOCK_htonl(SOCK_DISCOVERY_MULTICAST_IPADDR);
            UINT32 mcast2 = SOCK_htonl(SOCK_DISCOVERY_MULTICAST_IPADDR_SND);
            UINT32 mask   = SOCK_htonl(SOCK_MAKE_IP_ADDR(255,255,255,255));
            
            if(SOCK_SOCKET_ERROR == xn_rt_add((RTP_PFCUINT8)&mcast1, (RTP_PFUINT8)&mask, (RTP_PFUINT8)0, RT_USEIFACEMETRIC, interfaceNumber, RT_INF))
            {
                DEBUG_HANDLE_SOCKET_ERROR("Multicast xn_rt_add (recv)", FALSE);
            }
            if(SOCK_SOCKET_ERROR == xn_rt_add((RTP_PFCUINT8)&mcast2, (RTP_PFUINT8)&mask, (RTP_PFUINT8)0, RT_USEIFACEMETRIC, interfaceNumber, RT_INF))
            {
                DEBUG_HANDLE_SOCKET_ERROR("Multicast xn_rt_add (send)", FALSE);
            }

            /* JRT - TBD call xn_ip_set_option */
            default_mcast_iface = interfaceNumber;
            
            xn_interface_info(interfaceNumber, &info );

            debug_printf( "ip address from interface info: %d.%d.%d.%d\r\n", (UINT32)info.my_ip_address[0], 
                                                                             (UINT32)info.my_ip_address[1],                                                                 
                                                                             (UINT32)info.my_ip_address[2], 
                                                                             (UINT32)info.my_ip_address[3] );
            
            debug_printf( "mac addrress from interface info: %x.%x.%x.%x.%x.%x\r\n", (UINT32)info.my_ethernet_address[0], 
                                                                                     (UINT32)info.my_ethernet_address[1],                                                                 
                                                                                     (UINT32)info.my_ethernet_address[2], 
                                                                                     (UINT32)info.my_ethernet_address[3],                                                            
                                                                                     (UINT32)info.my_ethernet_address[4], 
                                                                                     (UINT32)info.my_ethernet_address[5] );
        }
    }
    
    return TRUE;
}
/*---------------------------------------------------------------------------*/
int main (int* argc, char* agrv[])
{
	int result;
	int done = 0;
    char ch;
	UPnPRuntime rt;
	UPnPControlPoint cp;
    rtp_net_init();
	rtp_threads_init();

	result = UPnP_RuntimeInit (
			&rt,
			0,                // serverAddr: IP_ANY_ADDR
			0,                // serverPort: any port
            RTP_NET_TYPE_IPV4,// ip version: ipv4
            0,                // web server root dir
			10,               // maxConnections
			5                 // maxHelperThreads
		);

	if (result >= 0)
	{
		/* Initialize the control point */
        if (UPnP_ControlPointInit(&cp, &rt, controlPointCallback, 0) >= 0)
		{
           	while(!done)
            {
                printf("\n********************************\n");
                printf("   Media Controller Demo Menu\n");
                printf("********************************\n\n");
                printf("Media Server - \n");
                printf("--> S to View Media Server\n");
                printf("--> B to Browse Root Directory\n");
                printf("--> f to search a mp3 file on server\n");
                printf("\nMedia Renderer - \n");
                printf("--> R to View Media Renderer\n");
                printf("\n--> Q to Exit Demo\n");
                ch = getch();
                ch = tolower(ch);
                switch (ch)
                {
                    case 's':
                        openMediaDevice (&rt, &cp, MEDIA_SERVER_UDN);
                        break;
                    case 'b': //Browse Mode
                        browseMediaServer (&rt, &cp);
                        break;
                    case 'f':
                        searchFileOnServer (&rt, &cp);
                        break;
                    case 'r':
                        openMediaDevice (&rt, &cp, MEDIA_RENDERER_UDN);
                        break;
                    case 'q':
                        done = 1;
                        break;
                    default :
                        break;
                }
           }
 		   UPnP_ControlPointDestroy (&cp, 0);
		}
		UPnP_RuntimeDestroy(&rt);
	}
    rtp_threads_shutdown();
	rtp_net_exit();
	return(0);
}
Exemple #5
0
int http_server_demo(void)
{
	HTTP_INT16 ipType = DEMO_IPVERSION;
	int idle_count = 0;
	rtp_net_init();
	rtp_threads_init();

	/* Set initial default values */
	rtp_memset(&ExampleServerCtx, 0, sizeof(ExampleServerCtx));
	rtp_strcpy(ExampleServerCtx.rootDirectory, DEMO_WWW_ROOT);
	rtp_strcpy(ExampleServerCtx.defaultFile,DEMO_WWW_FILE);
	ExampleServerCtx.chunkedEncoding 		= 0;
	ExampleServerCtx.numHelperThreads 		= DEMO_MAX_HELPERS;
	ExampleServerCtx.numConnections		 	= DEMO_MAX_CONNECTIONS;
	/* If these are {0,0,0,0} use the default interface otherwise we use the configured address */
	ExampleServerCtx.defaultIpAddr[0] = DEFAULT_DEMO_IPADDRESS[0];
	ExampleServerCtx.defaultIpAddr[1] = DEFAULT_DEMO_IPADDRESS[1];
	ExampleServerCtx.defaultIpAddr[2] = DEFAULT_DEMO_IPADDRESS[2];
	ExampleServerCtx.defaultIpAddr[3] = DEFAULT_DEMO_IPADDRESS[3];

	rtp_printf("Using IP address %d.%d.%d.%d (all zeroes means use default interface) \n",
		ExampleServerCtx.defaultIpAddr[0],	ExampleServerCtx.defaultIpAddr[1],
		ExampleServerCtx.defaultIpAddr[2],	ExampleServerCtx.defaultIpAddr[3]);

	/* Initialize the server */
	if (http_server_demo_restart() != 0)
		return(-1);

	/* Now loop continuously process one request per loop. */
	for (;;)
	{
		if (HTTP_ServerProcessOneRequest (&ExampleServerCtx.httpServer, 1000*60) < 0)
		{
			/* Print an idle counter every minute the server is not accessed */
			idle_count += 1;
			if (idle_count == 1)
				rtp_printf("\n Idle %d minutes      ", idle_count);
			else
				rtp_printf("                                     \r Idle %d minutes", idle_count);
		}
		else
			idle_count = 0;

		if (ExampleServerCtx.ModuleRequestingReload)
		{
			ExampleServerCtx.ModuleRequestingReload = 0;
			HTTP_ServerDestroy(&ExampleServerCtx.httpServer, &ExampleServerCtx.connectCtxArray);
			rtp_free(ExampleServerCtx.connectCtxArray);
			ExampleServerCtx.connectCtxArray = 0;
			/* Initialize the server */
			if (http_server_demo_restart() != 0)
			{
				rtp_net_exit();
				return(-1);
			}
		}
	}

	rtp_net_exit();
	return (0);

}