int main(int argc, char *argv[]) { struct sockaddr_in addr; unsigned short port; int fd, ret, fp; /* if (argc < 3) return usage(argv[0]); if (check_input_pipe()) return usage(argv[0]); */ port = atoi(argv[2]); memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(port); if (inet_aton(argv[1], &addr.sin_addr) != 1) { struct hostent *hent = gethostbyname(argv[1]); if (!hent) { return error("gethostbyname"); } memcpy(&addr.sin_addr, hent->h_addr, 4); } printf("Connecting to %s/%d\n", argv[1], port); fd = socket(AF_INET, SOCK_STREAM, 0); if (fd < 0) return error("socket"); if (connect(fd, (struct sockaddr *) &addr, sizeof(addr)) < 0) return error("connect"); fp = open("sock_epoll.c", O_RDONLY); client_splice(fd, fp); /* do { ret = ssplice(STDIN_FILENO, NULL, fd, NULL, SPLICE_SIZE, SPLICE_F_NONBLOCK); if (ret < 0) { if (errno == EAGAIN) { usleep(100); continue; } return error("splice"); } else if (!ret) break; } while (1); */ close(fd); close(fp); return 0; }
static int do_client(int out_fd, int file_fd, int offset) { int ret; if (run_splice) { ret = client_splice(out_fd, file_fd, offset); if (ret) return ret; } if (run_mmap) { ret = client_mmap(out_fd, file_fd, offset); if (ret) return ret; } if (run_rw) { ret = client_rw(out_fd, file_fd, offset); if (ret) return ret; } return 0; }