KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Hi I have the following program to check the send buffer size for a UDP socket. However, I the return value is a bit confusing to me. I use the following simple app: #include <sys/socket.h> #include <stdio.h> int main(int argc, char **argv) { int sockfd, sendbuff; socklen_t optlen; sockfd = socket(AF_INET, SOCK_DGRAM, 0); if(sockfd == -1) printf("Error"); int res = 0; // Get buffer size optlen = sizeof(sendbuff); res = getsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &sendbuff, &optlen); if(res == -1) printf("Error getsockopt one"); else printf("send buffer size = %d\n", sendbuff); // Set buffer size sendbuff = 98304; printf("sets the send buffer to %d\n", sendbuff); res = setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &sendbuff, sizeof(sendbuff)); if(res == -1) printf("Error setsockopt"); // Get buffer size optlen = sizeof(sendbuff); res = getsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &sendbuff, &optlen); if(res == -1) printf("Error getsockopt two"); else printf("send buffer size = %d\n", sendbuff); return 0; } The output on my machine is: send buffer size = 129024 sets the send buffer to 98304 new send buffer size = 196608 Can anybody clarify what I'm doing wrong here or how to interpret the output?
Tags (comma-separated)
Save Edits
Cancel