3 #include <netinet/in.h>
7 #include <sys/sendfile.h>
8 #include <sys/socket.h>
10 #include <sys/types.h>
13 static int error(const char *n)
19 static int parent(int listen_sk)
21 unsigned long received;
23 unsigned int len = sizeof(addr);
27 sk = accept(listen_sk, &addr, &len);
29 return error("accept");
34 int ret = recv(sk, NULL, 128*1024*1024, MSG_TRUNC);
41 if (errno == EAGAIN || errno == EINTR)
46 printf("Received %f MB of data\n", (double) received / (1024*1024));
51 int main(__attribute__((__unused__)) int argc, __attribute__((__unused__)) char **argv)
53 struct sockaddr_in saddr_in;
58 signal(SIGCHLD, SIG_IGN);
59 sk = socket(PF_INET, SOCK_STREAM, 0);
64 saddr_in.sin_addr.s_addr = htonl(INADDR_ANY);
65 saddr_in.sin_port = htons(1111);
67 if (bind(sk, (struct sockaddr*)&saddr_in, sizeof(saddr_in)) < 0) {
68 fprintf(stderr,"bind failed\n");
72 if (listen(sk, 1) < 0) {
77 if (getsockname(sk, &addr, &len) < 0) {
78 perror("getsockname");