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); }
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); }
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); }