3
#include <sys/socket.h>
4
#include <netinet/in.h>
10
#include <sys/ioctl.h>
13
#include <emscripten.h>
16
#define EXPECTED_BYTES 5
22
char expected[] = "emscripten";
23
struct sockaddr_in si_host,
29
void iter(void* arg) {
31
n = recvmsg(sock, &hdr, 0);
35
fprintf(stderr, "received %d bytes: %s", n, (char*)hdr.msg_iov[0].iov_base);
37
shutdown(sock, SHUT_RDWR);
44
emscripten_cancel_main_loop();
46
} else if(EWOULDBLOCK != errno) {
47
perror("recvmsg failed");
49
emscripten_cancel_main_loop();
55
memset(&si_host, 0, sizeof(struct sockaddr_in));
56
memset(&si_peer, 0, sizeof(struct sockaddr_in));
58
si_host.sin_family = AF_INET;
59
si_host.sin_port = htons(8991);
60
si_host.sin_addr.s_addr = htonl(INADDR_ANY);
62
if(-1 == (sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP))) {
63
perror("cannot create host socket");
67
if(-1 == bind(sock, (struct sockaddr*)&si_host, sizeof(struct sockaddr))) {
68
perror("cannot bind host socket");
72
iov[0].iov_base = buf;
73
iov[0].iov_len = sizeof(buf);
75
memset (&hdr, 0, sizeof (struct msghdr));
77
hdr.msg_name = &si_peer;
78
hdr.msg_namelen = sizeof(struct sockaddr_in);
83
emscripten_set_main_loop(iter, 0, 0);
85
while (!done) iter(NULL);
b'\\ No newline at end of file'