HPlogo HP-UX IPv6 Porting Guide: HP-UX 11i v2 September 2004 > Chapter 15 Sample Client/Server Programs

IPv6 TCP Client using getipnodebyname()

» 

Technical documentation

Complete book in PDF

 » Table of Contents

This code fragment is part of an example IPv6 client program that ships in the HP-UX 11i v2 /usr/lib/demos/networking/socket/af_inet6 directory, rewritten using the getipnodebyname() function call.

struct sockaddr_in6 peeraddr_in6;       /* for peer socket address */
memset ((char *)&peeraddr_in6, 0, sizeof(struct sockaddr_in6));
hp = getipnodebyname (argv[1], AF_INET6, AI_DEFAULT, &error);
  if (hp == NULL) {
fprintf(stderr, "%s: %s not found in /etc/hosts\n",
argv[0], argv[1]);
exit(1);
}
peeraddr_in6.sin6_family = hp->h_addrtype;
memcpy(&peeraddr_in6.sin6_addr, hp->h_addr, hp->h_length);
/* Find the information for the "example" server
* in order to get the needed port number.
*/
  sp = getservbyname ("example", "tcp");
  if (sp == NULL) {
    fprintf(stderr, "%s: example not found in /etc/services\n",
argv[0]);
exit(1);
}
peeraddr_in6.sin6_port = sp->s_port;

/* Create the socket. */
s = socket (AF_INET6, SOCK_STREAM, 0);
if (s == -1) {
perror(argv[0]);
fprintf(stderr, "%s: unable to create socket\n", argv[0]);
exit(1);
}
/* Try to connect to the remote server at the address
* which was just built into peeraddr.
*/
  if (connect(s, &peeraddr_in6, sizeof(peeraddr_in6)) == -1) {
    perror(argv[0]);
fprintf(stderr, "%s: unable to connect to remote\n", argv[0]);
exit(1);
}
© 2004 Hewlett-Packard Development Company, L.P.