3
#include <sys/socket.h>
4
#include <netinet/in.h>
10
#include <sys/ioctl.h>
13
#include <emscripten.h>
20
void iter(void *arg) {
30
n = recv(SocketFD, buffer, 1, 0);
33
if (errno == EAGAIN || errno == EWOULDBLOCK) {
37
fprintf(stderr, "unexcepted end of data");
42
fprintf(stderr, "should read 1 byte");
46
packetLength = buffer[0];
47
n = recv(SocketFD, buffer, packetLength, 0);
49
printf("got %d,%d\n", n, packetLength);
51
if (n != packetLength) {
52
fprintf(stderr, "lost packet data, expected: %d readed: %d", packetLength, n);
56
for (i = 0; i < packetLength; ++i) {
57
if (buffer[i] != i+1) {
58
fprintf(stderr, "packet corrupted, expected: %d, actual: %d", i+1, buffer[i]);
65
if (packetLength == buffer[0]) { // \x01\x01 - end marker
66
shutdown(SocketFD, SHUT_RDWR);
71
printf("sum: %d\n", sum);
80
struct sockaddr_in stSockAddr;
82
SocketFD = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
86
perror("cannot create socket");
90
memset(&stSockAddr, 0, sizeof(stSockAddr));
92
stSockAddr.sin_family = AF_INET;
93
stSockAddr.sin_port = htons(
100
Res = inet_pton(AF_INET, "127.0.0.1", &stSockAddr.sin_addr);
103
perror("error: first parameter is not a valid address family");
106
} else if (0 == Res) {
107
perror("char string (second parameter does not contain valid ipaddress)");
112
if (-1 == connect(SocketFD, (struct sockaddr *)&stSockAddr, sizeof(stSockAddr))) {
113
perror("connect failed");
120
emscripten_set_main_loop(iter, 0, 0);
122
while (!done) iter(NULL);