Ik heb een vraag over sockets in C.
Ik maak verbinding in mijn c app met een socket server die ik in ruby heb geschreven.
Dit ziet er zo uit
Dit gaat helemaal prima en kan ook op de socket server zien dat hij geconnect is.
Vervolgens gaat het systeem een bericht versturen om tegen de andere systemen te vertellen dat hij er is.
Ook dit komt helemaal netjes aan.
Vervolgens wil ik berichten gaan ontvangen die andere clients of deze client krijgt van de server.
En hier is waar het fout gaat. Ik krijg wel het eerste bericht terug dat hij geauthoriseerd is. Maar bij alle andere berichten zie je wel dat het binnenkomt (d.m.v > \n)maar het bericht zelf is niet zichtbaar.
Heeft iemand enig idee wat ik fout doe of wat di tkan zijn?
Alvast bedankt!
Ik maak verbinding in mijn c app met een socket server die ik in ruby heb geschreven.
Dit ziet er zo uit
C:
1
2
3
4
5
6
7
8
9
10
| /* Establish the connection to the echo server */ if (connect(sock, (struct sockaddr *) &echoServAddr, sizeof(echoServAddr)) < 0) DieWithError("connect() failed"); /* Socket server handshake */ echoString = "GET / HTTP/1.1\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nHost: 192.170.211.209:600\r\nOrigin: http://192.170.211.209\r\n\r\n"; echoStringLen = strlen(echoString); /* Determine input length */ /* Send the string to the server */ if (send(sock, echoString, echoStringLen, 0) != echoStringLen) DieWithError("send() sent a different number of bytes than expected"); |
Dit gaat helemaal prima en kan ook op de socket server zien dat hij geconnect is.
Vervolgens gaat het systeem een bericht versturen om tegen de andere systemen te vertellen dat hij er is.
C:
1
2
3
4
5
6
7
8
9
10
| char echoString1[255]; // max 255 chars moet genoeg zijn. voor iederee strcpy(echoString1, "X000134041113|TX001|TEST33\xff"); echoStringLen1 = strlen(echoString1); /* Determine input length */ echoString1[0]=0; /* NULL char on positon 0 */ /* Send the string to the server */ if (send(sock, echoString1, echoStringLen1, 0) != echoStringLen1) DieWithError("send() sent a different number of bytes than expected"); |
Ook dit komt helemaal netjes aan.
Vervolgens wil ik berichten gaan ontvangen die andere clients of deze client krijgt van de server.
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| #define BUFFER_SIZE 1024 char buffer[1024]; int n; do { n = recv(sock, buffer, BUFFER_SIZE, 0); /* Receive message from client */ buffer[n] = '\0'; /* terminate string */ printf("< %s\n", buffer); printf("BSIZE %i\n", BUFFER_SIZE); /*send(clientfd, buffer, BUFFER_SIZE, 0); */ } while(strncmp(buffer, "exit", 4) != 0); /* Exit when client sends "exit" */ close(sock); /*Close socket */ return 0; |
En hier is waar het fout gaat. Ik krijg wel het eerste bericht terug dat hij geauthoriseerd is. Maar bij alle andere berichten zie je wel dat het binnenkomt (d.m.v > \n)maar het bericht zelf is niet zichtbaar.
Heeft iemand enig idee wat ik fout doe of wat di tkan zijn?
Alvast bedankt!