#include #include #include #include /* for IPPROTO_TCP value */ #include /* for TCP_MAXSEG value */ int main(int argc, char **argv) { int sockfd, mss, sendbuff; int optlen; sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) perror("can't create socket"); /* Fetch and print the TCP maximum segment size. */ optlen = sizeof(mss); if (getsockopt(sockfd, IPPROTO_TCP, TCP_MAXSEG, &mss, &optlen) < 0) perror("TCP_MAXSEG getsockopt error"); printf("TCP mss = %d\n", mss); /* Set the send buffer size, then fetch it and print its value. */ sendbuff = 65536; if (setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &sendbuff, sizeof(sendbuff)) < 0) perror("SO_SNDBUF setsockopt error"); optlen = sizeof(sendbuff); if (getsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &sendbuff, &optlen) < 0) perror("SO_SNDBUF getsockopt error"); printf("send buffer size = %d\n", sendbuff); /* set and print the send and receive timeout */ int rcvtimeout=2; if (setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, &rcvtimeout, sizeof(rcvtimeout)) < 0) perror("SO_RCVTIMEO setsockopt error"); int sndtimeout=3; if (setsockopt(sockfd, SOL_SOCKET, SO_SNDTIMEO, &sndtimeout, sizeof(sndtimeout)) < 0) perror("SO_SNDTIMEO setsockopt error"); optlen = sizeof(sendbuff); if (getsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, &sendbuff, &optlen) < 0) perror("SO_RCVTIMEO getsockopt error"); printf ("receive timeout = %d\n", sendbuff); if (getsockopt(sockfd, SOL_SOCKET, SO_SNDTIMEO, &sendbuff, &optlen) < 0) perror("SO_SNDTIMEO getsockopt error"); printf ("send timeout = %d\n", sendbuff); exit(0); }