[c] Socket read-Rückgabewert vergleichen mit Variable

xiconfjs

Grünschnabel
Hi,

ich hab mich jetzt auch mal an die Sockets mit C rangemacht. Geht eigentlich im moment ganz gut. Doch irgendwie schaffe ich es nicht, die Ausgabe, die ich vom Socket-recv bekomme, mit einer Variable zu vergleichen. Zur Info, arbeite auf einen SuSE-Linux System. Wäre erfreut über einen Gedankenanstoß. :)

Bsp:
Code:
   int n;
char buffer[4]; 
n = read(sock,buffer,4);
if (n < 0) error("ERROR reading from socket");
char tester[4];
strcpy(tester, "abc");
if(buffer == tester) printf("Juhu, es geht...\n");
printf("Groesse von buffer: %i\n", sizeof(buffer));
printf("Here is the message: %s\n",buffer);
n = write(sock,"I got your message",18);
if (n < 0) error("ERROR writing to socket");

Das sendet der Client:
Code:
snprintf(request, sizeof(request), "abc\r\n");
send(sock, request, sizeof(request), 0)
Ausgabe beim Server:
Code:
Groesse von buffer: 4
Here is the message: abc
 
Hallo,

C-Strings sind Zeiger auf einen Speicherbereich, in dem eine Reihe von einzelnen Zeichen (char) sequentiell abgelegt sind. Vergleichst du zwei solcher Zeiger, prüfst du damit, ob sie auf denselben Speicherbereich verweisen. Um den Inhalt der Strings zu vergleichen, kannst du strcmp oder strncmp verwenden.

Grüße,
Matthias
 
na klar...omg, dass ich da nicht selber drauf gekommen bin, trotzdem danke.

Thema erledigt.

Lösung:
Code:
int n;
char buffer[4]; 
n = read(sock,buffer,4);
if (n < 0) error("ERROR reading from socket");
char tester[4];
strcpy(tester, "abc");
if(strcmp(buffer,tester) == 0) printf("Juhu, es geht...\n");
printf("Groesse von buffer: %i\n", sizeof(buffer));
printf("Here is the message: %s\n",buffer);
n = write(sock,"I got your message",18);
if (n < 0) error("ERROR writing to socket");
 
Zurück