README
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:4k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. For information about licensing, please see the LICENSE file in this
  2. directory, or http://www.vovida.org/license.html .
  3.                         Compiling the code
  4. To include DNS SRV in the util package:
  5. 1) make sure BIND 8 is installed in the system
  6. 2) update the BIND package in build/Makefile.pkg to contain the 
  7.    path to BIND appropriately.
  8. 3) update build/Makefile.opt file to include the BIND package:
  9.     USE_BIND=1
  10. 4) cd to top level directory, e.g. vocal
  11.     make util
  12. The DnsResolver utility implements the usage rules as defined
  13. in RFC 2782: a DNS RR for specifying the location of services 
  14. (DNS SRV).  See also IETF draft "draft-ietf-sip-srv-01.txt",
  15. SIP: Session Initiation Protocol -- Locating SIP Servers.
  16. For an example using the DnsResolver, take a look at the
  17. sipstack: sip/sipstack/SipMsg.* and SipUdp_impl.*
  18. Here's a brief usage guide:
  19. 1) Instantiate a DnsResolver object (which automatically do a SRV
  20.    record lookup:
  21.    Sptr<DnsResolver> dnsResolver = new 
  22.                      DnsResolver("level3.com", ns_t_srv, "_sip", "_udp");
  23.                               //  domainName, SRV type, service, protocol
  24.    int idx    = 0;
  25.    int dnsNum = dnsResolver.getNumDnsRecords();  // get number of dns records
  26.    boolean done = false;
  27.    Sptr<DnsRecord>* dnsRecord = 0;
  28.    while ((idx < dnsNum) && (done==false)) 
  29.    {
  30.       dnsRecord = dnsResolver->getRecord( dnsNum - 1 ); 
  31.       Data address = (*dnsRecord)->getAddress();  // get resolved IP address
  32.       int  portNum = (*dnsRecord)->getPort();     // get port #
  33.       ..........
  34.       .....  // update SipUrl with the resolved IP @ and port
  35.       // if send Sip request fails
  36.       //    continue
  37.       // else
  38.       //    done = true;   // exit while loop
  39.    }
  40. 2) The order of the list of DnsRecords (cached in a DnsResolver object)
  41.    can be shuffled by invoking:
  42.    dnsResolver.reOrder();    // shuffle existing DnsRecords
  43. 3) At any time, an application can reuse a DnsResolver object and
  44.    do a DNS SRV/ A record lookup by invoking:
  45.    dnsResolver.dnsLookUp();  // clear DnsRecords, and do a new ns lookup
  46.                Implementation details about DnsResolver  
  47.                ========================================
  48. DnsRecord     - class that defines the DNS record information from the
  49.                 Name Server, target name, port number, IP address,
  50.                 priority, weight, etc.
  51. DnsResolver   - utility class which maintains a vector of DnsRecords.
  52.                 On object instantiaion, this class automatically do
  53.                 a DNS lookup based on the "qType" parameter: ns_t_srv
  54.                 (for SRV lookup) or ns_t_a (for A record lookup).
  55.                 If a SRV record lookup succeeds, the code automatically
  56.                 resolves the host name to an IP address for each matching
  57.                 SRV record.
  58.                 If a SRV lookup fails, the code automatically invokes
  59.                 the Name Server once more, this time doing an A record
  60.                 lookup.  Information from an A record lookup differs
  61.                 from a SRV record.  Default weight and priority values
  62.                 are assigned to the A record:
  63.                       DEFAULT_WT  = 10;
  64.                       DEFAULT_PRIO= 10;
  65.                 This class also implements a load balancing algorithm
  66.                 given a set of equal priority SRV records with differnt
  67.                 weight values (re: RFC 2782)
  68. Dependency:
  69. BIND 8 - freely downloadable from http://www.isc.org/products/BIND/
  70. Note that we do not upgrade to BIND 9 due to the following reason:
  71. from http://www.isc.org/products/BIND/bind9.html site:
  72. BIND 9.1 is primarily a name server software distribution. In addition 
  73. to the name server, it also includes a new lightweight stub resolver 
  74. library and associated resolver daemon that fully support forward and 
  75. reverse lookups of both IPv4 and IPv6 addresses. This library is still 
  76. considered experimental and is not a complete replacement for the BIND 
  77. 8 resolver library. Applications that use the BIND 8 res_* functions 
  78. to perform DNS lookups or dynamic updates still need to be linked 
  79. against the BIND 8 libraries.............
  80. << --- last updated on May 17, 2001 by Wendy Breu --- >>