Greenleon
Tripel-As
Hi,
ich bastle im Moment an einem Tool, dass sich Daten von einem UDP Server holen soll.
Dazu stelle ich erst eine Verbindung her, sende dann ein Kommando und will dann so lange empfangen, bis nichts mehr kommt.
Das senden funktioniert gut und ich bekomme auch eine Antwort.
Das Problem ist, dass ich vorher nicht weiss, wie lang die Kette ist, die ich bekomm, deswegen muss ich theoretisch mit while arbeiten.
Der entsprechende Teil sieht so aus, wobei buffer ein char array ist und sock der udp socket.
Auch merkwuerdig ist, dass er die Daten nur ausgibt, wenn ich das \n in printf belasse. Ansonsten gehts nur bis zum ersten Zeilenumbruch in den empfangenen Daten.
Hat jemand ne Idee, wie ich eine gescheite Abbruchbedingung formuliert bekomme und warum die Ausgabe nicht richtig funktioniert?
Danke euch!
ich bastle im Moment an einem Tool, dass sich Daten von einem UDP Server holen soll.
Dazu stelle ich erst eine Verbindung her, sende dann ein Kommando und will dann so lange empfangen, bis nichts mehr kommt.
Das senden funktioniert gut und ich bekomme auch eine Antwort.
Das Problem ist, dass ich vorher nicht weiss, wie lang die Kette ist, die ich bekomm, deswegen muss ich theoretisch mit while arbeiten.
Der entsprechende Teil sieht so aus, wobei buffer ein char array ist und sock der udp socket.
Code:
do{
n=recv(
sock,
buffer,
sizeof(buffer),
0
);
printf("%i\n",n);
for(i=0; i<sizeof(buffer);i++)
printf("%c\n",buffer[i]);
} while(n>0);
Auch merkwuerdig ist, dass er die Daten nur ausgibt, wenn ich das \n in printf belasse. Ansonsten gehts nur bis zum ersten Zeilenumbruch in den empfangenen Daten.
Hat jemand ne Idee, wie ich eine gescheite Abbruchbedingung formuliert bekomme und warum die Ausgabe nicht richtig funktioniert?
Danke euch!