#include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { int fd, s; struct sockaddr_in dst; struct stat st; int err; char a[1]; fd = open(argv[1], O_WRONLY); if (fd == -1) { perror("open"); return (1); } err = read(fd, a, 1); printf("read: %d %d\n", err, errno); s = socket(AF_INET, SOCK_STREAM, 0); if (s == -1) { perror("socket"); return (1); } memset(&dst, 0, sizeof(dst)); dst.sin_family = AF_INET; dst.sin_port = htons(5000); dst.sin_addr.s_addr = htonl(INADDR_LOOPBACK); if (connect(s, (struct sockaddr *)&dst, sizeof(dst)) == -1) { perror("connect"); return (1); } if (fstat(fd, &st) == -1) { perror("stat"); return (1); } if (sendfile(fd, s, 0, st.st_size, NULL, NULL, 0) == -1) { perror("sendfile"); return (1); } return (0); }