Esempio n. 1
0
/**
 * @brief Wrapper to read from a generic socket
 * @param s The server settings
 * @return The resulting information, or NULL
 */
char *proto_gen_read(struct server_data *s)
{
	char *buffer = NULL;
	int r, sock;

	sock = open_tcp_client(s->server, s->port);
	buffer = socket_recv_all(sock, &r);
	socket_close(sock);

	return buffer;
}
Esempio n. 2
0
static StreamError refill_socket(SocketStream* stream) {
	size_t bytes_recv;
	if(socket_has_data(stream->sock) &&
			socket_recv_all(stream->sock, (void*)stream->start, FILE_BUFFER_SIZE, &bytes_recv) >= 0) {
		stream->cursor = stream->start;
		stream->end = stream->start + bytes_recv;

		return stream->error;
	} else {
		return fail_stream(stream, EofError);
	}
}
Esempio n. 3
0
/**
 * @brief Wrapper to read and test from a socket
 * @param sock The socket to read from
 * @param test The string to test for
 * @return 0 if successful, -1 if failure
 */
int proto_read_test(int sock, char *test)
{
	char *b = NULL, *c = NULL;
	int r = -1;

	b = socket_recv_all(sock, &r);
	if (b && r > 0) {
		c = strstr(b, test);
		free(b);
	}

	return (c == NULL) ? -1 : 0;
}
Esempio n. 4
0
File: test.c Progetto: xqyphp/kevent
void test_client()
{
	socket_t client_socket = client_create("127.0.0.1", SERVER_PORT);

	char buffer[] = "Hello,World!";
	socket_send(client_socket, buffer, sizeof(buffer));
	int len = 0;
	char* recv = socket_recv_all(client_socket, &len);
	if (recv){
		printf(recv);
	}

	close(client_socket);
}
Esempio n. 5
0
/**
 * @brief Wrapper to send a generic query
 * @param s The server settings
 * @param user The data to query with
 * @return The resulting information, or NULL
 */
char *proto_gen_write(struct server_data *s, char *data)
{
	int r;
	char *buffer = NULL;
	int sock;

	sock = open_tcp_client(s->server, s->port);
	if (socket_send_all(sock, data, strlen(data)) == 0) {
		buffer = socket_recv_all(sock, &r);
	}
	socket_close(sock);
	free(data);

	return buffer;
}
Esempio n. 6
0
/**
 * @brief Wrapper to read and test from a socket and return data
 * @param sock The socket to read from
 * @param test The string to test for
 * @param buf Pointer location for result
 * @return 0 if successful, -1 if failure
 *
 * This function first does a recv all and then
 * performs a search on the resulting data for
 * the first occurance of the result data. It
 * then creates a new buffer just past that
 * result and returns it.
 */
int proto_read_test_data(int sock, char *test, char *buf)
{
	char *b = NULL, *c = NULL;
	int r = -1;

	b = socket_recv_all(sock, &r);
	if (b && r > 0) {
		c = strstr(b, test);
		if (c != NULL) {
			c += strlen(test);			/* jump past result */
			buf = xmalloc(strlen(c));	/* copy to new buffer */
			strcpy(buf, c);
		}
		free(b);
	}

	return (c == NULL) ? -1 : 0;
}
Esempio n. 7
0
int Socket::recv_all(void* buffer, size_t size, size_t& bytes_recv) const {
	return socket_recv_all(sock, buffer, size, &bytes_recv);
}