Difference between revisions of "Socket functions"

From Ilianko
(Created page with "Category:sockets == Byte Order Conversion== *htons() host to network short *htonl() host to network long *ntohs() network to host short *ntohl() network to host long")
 
 
(3 intermediate revisions by the same user not shown)
Line 7: Line 7:
 
*ntohs() network to host short
 
*ntohs() network to host short
 
*ntohl() network to host long
 
*ntohl() network to host long
 +
 +
== IP address conversion==
 +
 +
 +
<code><pre>
 +
struct sockaddr_in sa; // IPv4
 +
struct sockaddr_in6 sa6; // IPv6
 +
 +
inet_pton(AF_INET, "192.0.2.1", &(sa.sin_addr)); // IPv4
 +
inet_pton(AF_INET6, "2001:db8:63b3:1::3490", &(sa6.sin6_addr)); // IPv6
 +
</pre></code>
 +
 +
// IPv4:
 +
char ip4[INET_ADDRSTRLEN];
 +
struct sockaddr_in sa;
 +
// space to hold the IPv4 string
 +
// pretend this is loaded with something
 +
inet_ntop(AF_INET, &(sa.sin_addr), ip4, INET_ADDRSTRLEN);
 +
printf("The IPv4 address is: %s\n", ip4);
 +
// IPv6:
 +
char ip6[INET6_ADDRSTRLEN]; // space to hold the IPv6 string
 +
struct sockaddr_in6 sa6;
 +
// pretend this is loaded with something
 +
inet_ntop(AF_INET6, &(sa6.sin6_addr), ip6, INET6_ADDRSTRLEN);
 +
printf("The address is: %s\n", ip6);
 +
 +
== getaddrinfo() ==
 +
<code><pre>
 +
int getaddrinfo(const char *node, // e.g. "www.example.com" or IP
 +
  const char *service, // e.g. "http" or port number
 +
  const struct addrinfo *hints,
 +
  struct addrinfo **res);
 +
</pre></code>
 +
 +
== socket() ==
 +
 +
<code><pre>
 +
int socket(int domain, int type, int protocol);
 +
</pre></code>
 +
 +
== x ==

Latest revision as of 14:53, 14 April 2013


Byte Order Conversion

  • htons() host to network short
  • htonl() host to network long
  • ntohs() network to host short
  • ntohl() network to host long

IP address conversion

struct sockaddr_in sa; // IPv4
struct sockaddr_in6 sa6; // IPv6

inet_pton(AF_INET, "192.0.2.1", &(sa.sin_addr)); // IPv4
inet_pton(AF_INET6, "2001:db8:63b3:1::3490", &(sa6.sin6_addr)); // IPv6

// IPv4: char ip4[INET_ADDRSTRLEN]; struct sockaddr_in sa; // space to hold the IPv4 string // pretend this is loaded with something inet_ntop(AF_INET, &(sa.sin_addr), ip4, INET_ADDRSTRLEN); printf("The IPv4 address is: %s\n", ip4); // IPv6: char ip6[INET6_ADDRSTRLEN]; // space to hold the IPv6 string struct sockaddr_in6 sa6; // pretend this is loaded with something inet_ntop(AF_INET6, &(sa6.sin6_addr), ip6, INET6_ADDRSTRLEN); printf("The address is: %s\n", ip6);

getaddrinfo()

int getaddrinfo(const char *node, // e.g. "www.example.com" or IP
  const char *service, // e.g. "http" or port number
  const struct addrinfo *hints,
  struct addrinfo **res);

socket()

int socket(int domain, int type, int protocol);

x