1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| #include <sys/socket.h> #include <arpa/inet.h> #include <assert.h> #include <stdio.h> #include <unistd.h> #include <string.h> #include <stdlib.h>
#define BUFFER_SIZE 512
int main(int argc, char* argv[]) { if (argc <= 3) { printf("usage: %s ip_address port_number send_bufer_size\n", basename(argv[0])); return 1; } const char* ip = argv[1]; int port = atoi(argv[2]);
struct sockaddr_in server_address = {0}; server_address.sin_family = AF_INET; inet_pton(AF_INET, ip, &server_address.sin_addr); server_address.sin_port = htons(port);
int sock = socket(PF_INET, SOCK_STREAM, 0); assert(sock >= 0);
int sendbuf = atoi(argv[3]); int len = sizeof(sendbuf); setsockopt(sock, SOL_SOCKET, SO_SNDBUF, &sendbuf, sizeof(sendbuf)); getsockopt(sock, SOL_SOCKET, SO_SNDBUF, &sendbuf, (socklen_t*)&len); printf("the tcp send buffer size after setting is %d\n", sendbuf);
if (connect(sock, (struct sockaddr*)&server_address, sizeof(server_address)) != -1) { char buffer[BUFFER_SIZE]; memset(buffer, 'a', BUFFER_SIZE); send(sock, buffer, BUFFER_SIZE, 0); }
close(sock); return 0; }
|