3
#include <sys/socket.h>
4
#include <netinet/in.h>
10
#include <sys/ioctl.h>
12
#include <emscripten.h>
15
#include "websockets_bigdata.h"
17
#define EXPECTED_BYTES DATA_SIZE
21
unsigned int get_all_buf(int sock, char* output, unsigned int maxsize)
24
if (ioctl(sock, FIONREAD, &bytes)) return 0;
25
if (bytes == 0) return 0;
27
char buffer[EXPECTED_BYTES];
29
unsigned int offset = 0;
30
while((errno = 0, (n = recv(sock, buffer, sizeof(buffer), 0))>0) ||
34
if (((unsigned int) n)+offset > maxsize) { fprintf(stderr, "too much data!"); exit(EXIT_FAILURE); }
35
memcpy(output+offset, buffer, n);
40
if(n < 0 && errno != EAGAIN && errno != EWOULDBLOCK) {
41
fprintf(stderr, "error in get_all_buf!");
49
void iter(void *arg) {
50
/* perform read write operations ... */
51
static char out[EXPECTED_BYTES];
53
printf("so far %d, expecting up to %d\n", pos, EXPECTED_BYTES-pos);
54
int n = get_all_buf(SocketFD, out+pos, EXPECTED_BYTES-pos);
55
if (n) printf("read! %d\n", n);
57
if (pos >= EXPECTED_BYTES) {
58
shutdown(SocketFD, SHUT_RDWR);
64
emscripten_cancel_main_loop();
67
char *comp = generateData();
68
int result = strcmp(comp, out);
70
for (int i = 0; i < DATA_SIZE; i++) {
71
printf("%d:%d\n", comp[i], out[i]);
81
printf("hello from main page\n");
83
struct sockaddr_in stSockAddr;
85
SocketFD = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
89
perror("cannot create socket");
93
memset(&stSockAddr, 0, sizeof(stSockAddr));
95
stSockAddr.sin_family = AF_INET;
96
stSockAddr.sin_port = htons(
103
Res = inet_pton(AF_INET, "127.0.0.1", &stSockAddr.sin_addr);
106
perror("error: first parameter is not a valid address family");
109
} else if (0 == Res) {
110
perror("char string (second parameter does not contain valid ipaddress)");
115
if (-1 == connect(SocketFD, (struct sockaddr *)&stSockAddr, sizeof(stSockAddr))) {
116
perror("connect failed");
123
emscripten_run_script("console.log('adding iframe');"
124
"var iframe = document.createElement('iframe');"
125
"iframe.src = 'side.html';"
126
"iframe.width = '100%';"
127
"iframe.width = '40%';"
128
"document.body.appendChild(iframe);"
129
"console.log('added.');");
130
emscripten_set_main_loop(iter, 3, 0);
132
while (!done) iter(NULL);