Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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;
}