int main() { netbios_ns *ns; netbios_ns_discover_callbacks callbacks; ns = netbios_ns_new(); callbacks.p_opaque = (void*)0x42; callbacks.pf_on_entry_added = on_entry_added; callbacks.pf_on_entry_removed = on_entry_removed; printf("Discovering...\nPress Enter to quit\n"); if (!netbios_ns_discover_start(ns, 4, // broadcast every 4 sec &callbacks)) { fprintf(stderr, "Error while discovering local network\n"); exit(42); } getchar(); netbios_ns_discover_stop(ns); return (0); }
int bdsm_SdOpen (vlc_object_t *p_this) { services_discovery_t *p_sd = (services_discovery_t *)p_this; services_discovery_sys_t *p_sys = calloc (1, sizeof (*p_sys)); netbios_ns_discover_callbacks callbacks; if( p_sys == NULL ) return VLC_ENOMEM; p_sd->p_sys = p_sys; p_sys->p_entry_item_list = vlc_array_new(); if ( p_sys->p_entry_item_list == NULL ) return VLC_ENOMEM; p_sys->p_ns = netbios_ns_new(); if( p_sys->p_ns == NULL ) goto error; callbacks.p_opaque = p_sd; callbacks.pf_on_entry_added = netbios_ns_discover_on_entry_added; callbacks.pf_on_entry_removed = netbios_ns_discover_on_entry_removed; if( netbios_ns_discover_start( p_sys->p_ns, BROADCAST_TIMEOUT, &callbacks) != 0 ) goto error; return VLC_SUCCESS; error: bdsm_SdClose( p_this ); return VLC_EGENERIC; }