diff options
author | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2016-06-25 23:40:57 +0200 |
---|---|---|
committer | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2016-06-25 23:40:57 +0200 |
commit | fb33e6b84719746d22938e2e79c57b5954f63fa4 (patch) | |
tree | 56e95a641ad7e166d4046c42350e3a7517cb1fb3 /mcastseed/src/dgrambuf_test.c | |
parent | fdcb963675c1e2e22a3c6e868e6f77de7fcb06a2 (diff) | |
download | eficast-fb33e6b84719746d22938e2e79c57b5954f63fa4.tar.gz eficast-fb33e6b84719746d22938e2e79c57b5954f63fa4.tar.bz2 eficast-fb33e6b84719746d22938e2e79c57b5954f63fa4.zip |
receive_data : use some ring buffer to batch recv, reorder, validate
Diffstat (limited to 'mcastseed/src/dgrambuf_test.c')
-rw-r--r-- | mcastseed/src/dgrambuf_test.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/mcastseed/src/dgrambuf_test.c b/mcastseed/src/dgrambuf_test.c new file mode 100644 index 0000000..1b96e3d --- /dev/null +++ b/mcastseed/src/dgrambuf_test.c @@ -0,0 +1,46 @@ +#include "dgrambuf.h" + +#define _GNU_SOURCE +#include <netinet/ip.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/socket.h> + +int open_test_socket(); + +/* + * Quick'n'dirty bash udp sender + * while true; do echo $RANDOM > /dev/udp/127.0.0.1/1234; sleep 0.25; done + */ + +int main() { + int res=1, sockfd=open_test_socket(); + dgrambuf_t dgb=dgrambuf_new(3, 50); + while (res > 0) { + res = dgrambuf_recvmmsg(dgb, sockfd); + printf("dgrambuf_recvmmsg() => %i\n", res); + printf("dgrambuf_free_count => %zi\n", dgrambuf_free_count(dgb)); + } + return 0; +} + +int open_test_socket() { + int sockfd; + struct sockaddr_in sa; + sockfd = socket(AF_INET, SOCK_DGRAM, 0); + if (sockfd == -1) { + perror("socket()"); + exit(EXIT_FAILURE); + } + + sa.sin_family = AF_INET; + sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK); + sa.sin_port = htons(1234); + if (bind(sockfd, (struct sockaddr *) &sa, sizeof(sa)) == -1) { + perror("bind()"); + exit(EXIT_FAILURE); + } + + return sockfd; +} |