--- libaitio/example/recvfile.c 2011/11/02 16:11:09 1.1 +++ libaitio/example/recvfile.c 2011/12/13 02:23:07 1.2 @@ -0,0 +1,50 @@ +#include +#include +#include +#include +#include + + +int +main(int argc, char **argv) +{ + int s, c, sl; + struct sockaddr sa; + struct sockaddr_in sin; + + if (argc < 3) + return 1; + + sa.sa_len = sl = sizeof sa; + sin.sin_len = sizeof sin; + sin.sin_family = AF_INET; + sin.sin_port = htons(5000); + sin.sin_addr.s_addr = inet_addr("127.0.0.1"); + + s = socket(AF_INET, SOCK_STREAM, 0); + if (s == -1) { + perror("socket"); + return 2; + } + if (bind(s, (struct sockaddr*) &sin, sizeof sin) == -1) { + perror("bind"); + close(s); + return 3; + } + if (listen(s, 5) == -1) { + perror("listen"); + close(s); + return 4; + } + + if ((c = accept(s, &sa, &sl)) != -1) { + sl = ioRecvFile(c, argv[1], strtol(argv[2], NULL, 0), 0644, argv[3] ? strtol(argv[3], NULL, 0) : 0); + printf("received %d bytes\n", sl); + if (!sl) + printf("#%d - %s\n", io_GetErrno(), io_GetError()); + close(c); + } + + close(s); + return 0; +}