/** * Do an M-SEARCH to look for devices in the network. * * @param ctrlPoint The control point in question * @param target The Search Target parameter (ex. "ssdp:all") */ bool mupnp_controlpoint_search(mUpnpControlPoint *ctrlPoint, const char *target) { mUpnpSSDPRequest *ssdpReq; mUpnpSSDPResponseServerList *ssdpResServerList; int i = 0; bool retval = false; mupnp_log_debug_l4("Entering...\n"); ssdpReq = mupnp_ssdprequest_new(); mupnp_ssdprequest_setmethod(ssdpReq, MUPNP_HTTP_MSEARCH); mupnp_ssdprequest_setst(ssdpReq, target); mupnp_ssdprequest_setmx(ssdpReq, mupnp_controlpoint_getssdpsearchmx(ctrlPoint)); mupnp_ssdprequest_setman(ssdpReq, MUPNP_MAN_DISCOVER); mupnp_log_debug("Announcing %d times.\n", mupnp_ssdp_getannouncecount()); mupnp_ssdprequest_print(ssdpReq); for (i = 0; i < mupnp_ssdp_getannouncecount(); i++) { ssdpResServerList = mupnp_controlpoint_getssdpresponseserverlist(ctrlPoint); retval = ( mupnp_ssdpresponse_serverlist_post(ssdpResServerList, ssdpReq ) || retval ); mupnp_wait(MUPNP_CONTROLPOINT_SSDP_MIN_DELAY); } mupnp_ssdprequest_delete(ssdpReq); mupnp_log_debug_l4("Leaving...\n"); return retval; }
MBEG #else int main(int argc, char* argv[]) #endif { mUpnpControlPoint* ctrlPoint; ctrlPoint = mupnp_controlpoint_new(); if (!mupnp_controlpoint_start(ctrlPoint)) { printf("Couldn't start this control point !!"); exit(1); } mupnp_controlpoint_search(ctrlPoint, MUPNP_ST_ROOT_DEVICE); mupnp_sleep(mupnp_controlpoint_getssdpsearchmx(ctrlPoint) * 1000); PrintDMSInfos(ctrlPoint); mupnp_controlpoint_stop(ctrlPoint); mupnp_controlpoint_delete(ctrlPoint); return (0); }