-
Notifications
You must be signed in to change notification settings - Fork 21
/
test_server.c
42 lines (37 loc) · 1.2 KB
/
test_server.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <err.h>
#include <e131.h>
int main() {
int sockfd;
e131_packet_t packet;
e131_error_t error;
uint8_t last_seq = 0x00;
// create a socket for E1.31
if ((sockfd = e131_socket()) < 0)
err(EXIT_FAILURE, "e131_socket");
// bind the socket to the default E1.31 port
if (e131_bind(sockfd, E131_DEFAULT_PORT) < 0)
err(EXIT_FAILURE, "e131_bind");
// join the socket to multicast group for universe 1 on the default network interface
if (e131_multicast_join_iface(sockfd, 1, 0) < 0)
err(EXIT_FAILURE, "e131_multicast_join_iface");
// loop to receive E1.31 packets
fprintf(stderr, "waiting for E1.31 packets ...\n");
for (;;) {
if (e131_recv(sockfd, &packet) < 0)
err(EXIT_FAILURE, "e131_recv");
if ((error = e131_pkt_validate(&packet)) != E131_ERR_NONE) {
fprintf(stderr, "e131_pkt_validate: %s\n", e131_strerror(error));
continue;
}
if (e131_pkt_discard(&packet, last_seq)) {
fprintf(stderr, "warning: packet out of order received\n");
last_seq = packet.frame.seq_number;
continue;
}
e131_pkt_dump(stderr, &packet);
last_seq = packet.frame.seq_number;
}
}