test2.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #include "unp.h"
  2. int
  3. main(int argc, char **argv)
  4. {
  5. int sockfd;
  6. socklen_t salen;
  7. struct addrinfo *res;
  8. struct sockaddr *cli, *serv;
  9. if (argc != 2)
  10. err_quit("usage: test2 <IPaddress>");
  11. #ifdef notdef
  12. res = Host_serv(argv[1], "daytime", AF_UNSPEC, SOCK_DGRAM);
  13. printf("res->ai_addrlen = %d\n", res->ai_addrlen);
  14. printf("res->ai_addr = %p\n", res->ai_addr);
  15. printf("res->ai_next = %p\n", res->ai_next);
  16. printf("res->ai_addr->sa_family = %p\n", res->ai_addr->sa_family);
  17. #endif
  18. sockfd = Udp_client(argv[1], "13", (void **) &serv, &salen);
  19. printf("sockfd = %d\n", sockfd);
  20. exit(0);
  21. }
  22. #ifdef notdef
  23. int
  24. udp_client(const char *host, const char *serv, void **saptr, socklen_t *lenp)
  25. {
  26. int sockfd, n;
  27. struct addrinfo hints, *res, *ressave;
  28. bzero(&hints, sizeof(struct addrinfo));
  29. hints.ai_family = AF_UNSPEC;
  30. hints.ai_socktype = SOCK_DGRAM;
  31. if ( (n = getaddrinfo(host, serv, &hints, &res)) != 0)
  32. err_quit("udp_client error for %s, %s: %s",
  33. host, serv, gai_strerror(n));
  34. ressave = res;
  35. do {
  36. sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
  37. if (sockfd >= 0)
  38. break; /* success */
  39. } while ( (res = res->ai_next) != NULL);
  40. if (res == NULL) /* errno set from final socket() */
  41. err_sys("udp_client error for %s, %s", host, serv);
  42. *saptr = Malloc(res->ai_addrlen);
  43. memcpy(*saptr, res->ai_addr, res->ai_addrlen);
  44. *lenp = res->ai_addrlen;
  45. freeaddrinfo(ressave);
  46. return(sockfd);
  47. }
  48. int
  49. Udp_client(const char *host, const char *serv, void **saptr, socklen_t *lenptr)
  50. {
  51. return(udp_client(host, serv, saptr, lenptr));
  52. }
  53. #endif