rcvbuf.c 972 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #include "unp.h"
  2. #include <netinet/tcp.h> /* for TCP_MAXSEG */
  3. int
  4. main(int argc, char **argv)
  5. {
  6. int sockfd, rcvbuf, mss;
  7. socklen_t len;
  8. struct sockaddr_in servaddr;
  9. if (argc != 2)
  10. err_quit("usage: rcvbuf <IPaddress>");
  11. sockfd = Socket(AF_INET, SOCK_STREAM, 0);
  12. len = sizeof(rcvbuf);
  13. Getsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &rcvbuf, &len);
  14. len = sizeof(mss);
  15. Getsockopt(sockfd, IPPROTO_TCP, TCP_MAXSEG, &mss, &len);
  16. printf("defaults: SO_RCVBUF = %d, MSS = %d\n", rcvbuf, mss);
  17. bzero(&servaddr, sizeof(servaddr));
  18. servaddr.sin_family = AF_INET;
  19. servaddr.sin_port = htons(13); /* daytime server */
  20. Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);
  21. Connect(sockfd, (SA *) &servaddr, sizeof(servaddr));
  22. len = sizeof(rcvbuf);
  23. Getsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &rcvbuf, &len);
  24. len = sizeof(mss);
  25. Getsockopt(sockfd, IPPROTO_TCP, TCP_MAXSEG, &mss, &len);
  26. printf("after connect: SO_RCVBUF = %d, MSS = %d\n", rcvbuf, mss);
  27. exit(0);
  28. }