SocketTest.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /******************************************************************
  2. *
  3. * uEcho for C
  4. *
  5. * Copyright (C) Satoshi Konno 2015
  6. *
  7. * This is licensed under BSD-style license, see file COPYING.
  8. *
  9. ******************************************************************/
  10. #include <boost/test/unit_test.hpp>
  11. #include <uecho/net/interface.h>
  12. #include <uecho/net/socket.h>
  13. #include <uecho/uecho.h>
  14. BOOST_AUTO_TEST_CASE(BindAddr)
  15. {
  16. uEchoNetworkInterfaceList* net_if_list = uecho_net_interfacelist_new();
  17. BOOST_CHECK(0 < uecho_net_gethostinterfaces(net_if_list));
  18. if (uecho_net_gethostinterfaces(net_if_list) <= 0) {
  19. uecho_net_interfacelist_delete(net_if_list);
  20. return;
  21. }
  22. uEchoNetworkInterface* net_if = uecho_net_interfacelist_gets(net_if_list);
  23. const char* bind_addr = uecho_net_interface_getaddress(net_if);
  24. uEchoSocket* sock = uecho_socket_dgram_new();
  25. uEchoSocketOption* opt = uecho_socket_option_new();
  26. // Unicast binding
  27. uecho_socket_option_setbindinterface(opt, true);
  28. uecho_socket_option_setreuseaddress(opt, true);
  29. uecho_socket_option_setmulticastloop(opt, false);
  30. BOOST_CHECK(uecho_socket_bind(sock, uEchoUdpPort, bind_addr, opt));
  31. BOOST_CHECK(uecho_socket_close(sock));
  32. // Multicast binding
  33. uecho_socket_option_setbindinterface(opt, false);
  34. uecho_socket_option_setreuseaddress(opt, true);
  35. uecho_socket_option_setmulticastloop(opt, true);
  36. BOOST_CHECK(uecho_socket_bind(sock, uEchoUdpPort, bind_addr, opt));
  37. BOOST_CHECK(uecho_socket_close(sock));
  38. uecho_socket_option_delete(opt);
  39. uecho_socket_delete(sock);
  40. uecho_net_interfacelist_delete(net_if_list);
  41. }