Einen schönen guten Abend,
ich habe ein Problem mit Winsock.
Ich kann zwar vom client zum Server senden und es kommt auch an, aber
dann bleibe ich in einer Endlosschleife hängen.
Client und Server laufen auf dem Selben PC.
1 | uint8_t main(void)
|
2 | {
|
3 | initServer();
|
4 | while(1)
|
5 | {
|
6 | waitForData();
|
7 | }
|
8 | }
|
1 | uint8_t waitForData(void)
|
2 | {
|
3 | int iResult;
|
4 | char recvbuf[DEFAULT_BUFLEN];
|
5 | int recvbuflen = DEFAULT_BUFLEN;
|
6 | // Receive until the peer shuts down the connection
|
7 | // do{
|
8 | iResult = recv(ClientSocket, recvbuf, recvbuflen, 0);
|
9 | if (iResult > 0)
|
10 | {
|
11 | printf("Bytes received: %d\n", iResult);
|
12 | for(uint8_t x=0; x<iResult; x++)
|
13 | {
|
14 | printf("%c ", recvbuf[x]);
|
15 | }
|
16 | printf("\n\n");
|
17 | (void)receiveArray(&recvbuf[0], &recvIData[0], iResult);
|
18 | for(uint8_t x=0; x<iResult; x++)
|
19 | {
|
20 | printf("0x%x ", recvIData[x]);
|
21 | }
|
22 | printf("\n\n");
|
23 | }
|
24 | else if (iResult == 0)
|
25 | {
|
26 | printf("Connection closing...\n");
|
27 | }
|
28 | else
|
29 | {
|
30 | printf("recv failed with error: %d\n", WSAGetLastError());
|
31 | closesocket(ClientSocket);
|
32 | WSACleanup();
|
33 | return 1;
|
34 | }
|
35 | // }while (iResult > 0);
|
36 | }
|
Wenn ich den server über der konsole starte sehe ich zunächst nichts.
Erst wenn ich vom Client datan sende, sehe ich folgenden output
Bytes received: 4
3 R 0 1
0x3 0x22 0x0 0x1
Connection closing...
Connection closing...
Connection closing...
das läuft dann immer so weiter.
Warum kommt funktioniert das immer nur beim ersten durchlauf?