コード例 #1
0
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);
}
コード例 #2
0
ファイル: echo_server.c プロジェクト: Julia117/embox
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;
}