File: test_sockaddr.cc

package info (click to toggle)
libtorrent 0.13.8-2.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,944 kB
  • sloc: cpp: 32,235; makefile: 520; xml: 163; ansic: 153; sh: 45
file content (77 lines) | stat: -rw-r--r-- 2,148 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
#include <rak/address_info.h>
#include "../src/torrent/object.h"

void
print_addr(const char* name, const rak::socket_address_inet& sa) {
  std::cout << name << ": " << sa.family() << ' ' << sa.address_str() << ':' << sa.port() << std::endl;
}

bool
lookup_address(const char* name) {
  rak::address_info* result;

  std::cout << "Lookup: " << name << std::endl;

//   int errcode = rak::address_info::get_address_info(name, 0, 0, &result);
  int errcode = rak::address_info::get_address_info(name, PF_INET6, 0, &result);

  if (errcode != 0) {
    std::cout << "Failed: " << rak::address_info::strerror(errcode) << std::endl;
    return false;
  }

  for (rak::address_info* itr = result; itr != NULL; itr = itr->next()) {
    std::cout << "Flags: " << itr->flags() << std::endl;
    std::cout << "Family: " << itr->family() << std::endl;
    std::cout << "Socket Type: " << itr->socket_type() << std::endl;
    std::cout << "Protocol: " << itr->protocol() << std::endl;
    std::cout << "Length: " << itr->length() << std::endl;

    std::cout << "Address: " << itr->address()->family() << ' ' << itr->address()->address_str() << ':' << itr->address()->port() << std::endl;
  }

  // Release.
  freeaddrinfo(reinterpret_cast<addrinfo*>(result));

  return true;
}

int
main(int argc, char** argv) {
  std::cout << "sizeof(sockaddr_in): " << sizeof(sockaddr_in) << std::endl;
  std::cout << "sizeof(sockaddr_in6): " << sizeof(sockaddr_in6) << std::endl;

  rak::socket_address saNone;
  saNone.set_family();
  print_addr("none", *saNone.sa_inet());

  rak::socket_address_inet sa1;
  sa1.set_family();
  sa1.set_port(0);
  sa1.set_address_any();

  print_addr("sa1", sa1);

  rak::socket_address_inet sa2;
  sa2.set_family();
  sa2.set_port(12345);

  if (!sa2.set_address_str("123.45.67.255"))
    return -1;

  print_addr("sa2", sa2);

  rak::socket_address sa3;
  sa3.sa_inet()->set_family();
  sa3.sa_inet()->set_port(6999);
  sa3.sa_inet()->set_address_str("127.0.0.2");

  print_addr("sa3", *sa3.sa_inet());

  lookup_address("www.uio.no");
  lookup_address("www.ipv6.org");
  lookup_address("lampedusa");

  return 0;
}