int main(int argc, char** argv) { if (argc != 4) { fprintf(stderr, "%s\n", "required arguments: input file, IP address, port"); exit(-1); } sock_desc sock = sock_tcp_init(); sock_connect(sock, argv[2], atoi(argv[3])); FILE* input = fopen(argv[1], "r"); char* buffer = malloc(BUFFER_SIZE); size_t size_read = 0; /* Send all the data from the file */ while ((size_read = fread(buffer, sizeof(char), BUFFER_SIZE, input))) { sock_send(sock, size_read, buffer); } fprintf(stderr, LOG_PRE "%s\n", "file sent, closing socket"); sock_close(sock); free(buffer); fclose(input); }
static int exec(int argc, char *argv[]) { int ret, res, sock_udp, sock_tcp; sock_udp = sock_tcp = -1; /* XXX required for -O2 */ /** * Make udp socket */ ret = sock_udp_init(&sock_udp); if (ret != 0) return ret; /** * Make tcp socket */ ret = sock_tcp_init(&sock_tcp); if (ret != 0) { close(sock_udp); return ret; } /** * Handling requests */ ret = socks_handler(sock_udp, sock_tcp); if (ret != 0) { close(sock_udp); close(sock_tcp); return ret; } /** * Close udp socket */ res = close(sock_udp); if (res == -1) { ret = -errno; perror("close"); close(sock_tcp); return ret; } /** * Close tcp socket */ res = close(sock_tcp); if (res == -1) { ret = -errno; perror("close"); return ret; } return 0; }