example2.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /* Netbios Discover */
  2. #include <arpa/inet.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <bdsm/bdsm.h>
  6. static void print_entry(const char *what, void *p_opaque,
  7. netbios_ns_entry *entry)
  8. {
  9. struct in_addr addr;
  10. addr.s_addr = netbios_ns_entry_ip(entry);
  11. printf("%s(%p): Ip: %s, name: %s/%s<%x>\n",
  12. what,
  13. p_opaque,
  14. inet_ntoa(addr),
  15. netbios_ns_entry_group(entry),
  16. netbios_ns_entry_name(entry),
  17. netbios_ns_entry_type(entry));
  18. }
  19. static void on_entry_added(void *p_opaque,
  20. netbios_ns_entry *entry)
  21. {
  22. print_entry("added", p_opaque, entry);
  23. }
  24. static void on_entry_removed(void *p_opaque,
  25. netbios_ns_entry *entry)
  26. {
  27. print_entry("removed", p_opaque, entry);
  28. }
  29. int main()
  30. {
  31. netbios_ns *ns;
  32. netbios_ns_discover_callbacks callbacks;
  33. ns = netbios_ns_new();
  34. callbacks.p_opaque = (void*)0x42;
  35. callbacks.pf_on_entry_added = on_entry_added;
  36. callbacks.pf_on_entry_removed = on_entry_removed;
  37. printf("Discovering...\nPress Enter to quit\n");
  38. if (!netbios_ns_discover_start(ns,
  39. 4, // broadcast every 4 sec
  40. &callbacks))
  41. {
  42. fprintf(stderr, "Error while discovering local network\n");
  43. exit(42);
  44. }
  45. getchar();
  46. netbios_ns_discover_stop(ns);
  47. return (0);
  48. }