dgcliinetaddr.c 628 B

1234567891011121314151617181920212223242526
  1. #include "unp.h"
  2. void
  3. dg_cli(FILE *fp, int sockfd, const SA *pservaddr, socklen_t servlen)
  4. {
  5. int n;
  6. char sendline[MAXLINE], recvline[MAXLINE + 1];
  7. socklen_t len;
  8. struct sockaddr_in *replyaddr;
  9. replyaddr = Malloc(servlen);
  10. while (Fgets(sendline, MAXLINE, fp) != NULL) {
  11. Sendto(sockfd, sendline, strlen(sendline), 0, pservaddr, servlen);
  12. len = servlen;
  13. n = Recvfrom(sockfd, recvline, MAXLINE, 0, (SA *) replyaddr, &len);
  14. printf("received reply from %s, port %d\n",
  15. inet_ntoa(replyaddr->sin_addr), htons(replyaddr->sin_port));
  16. recvline[n] = 0; /* null terminate */
  17. Fputs(recvline, stdout);
  18. }
  19. }