socket char arrays vergleichen
-
Also, ich hab folgendes Problem,
ich will einen server schreiben der mit recv() einen char array empfängt,
ihn mit einem wort bzw. einem weiteren char array vergleicht, und wenn sie
übereinstimmen er etwas bestimmtes macht...warum geht folgendes nicht:
#include <stdio.h> #include <Winsock.h> #include <Windows.h> int initwinsock (); int handling(int c, struct sockaddr_in cli); int main (int argc, char *argv[]) { int s, c, cli_size; struct sockaddr_in addr, cli; initwinsock(); addr.sin_family = AF_INET; addr.sin_port = htons((unsigned short int)atol(argv[1])); addr.sin_addr.s_addr = INADDR_ANY; s=socket(AF_INET, SOCK_STREAM, 0); bind(s, &addr, sizeof(addr)); listen(s, 3); for(;;) { cli_size = sizeof(cli); c = accept(s, &cli, &cli_size); if (c == -1) { perror("accept() failed"); return 5; } printf("[Conection by %s]\n", inet_ntoa(cli.sin_addr)); if (handling(c, cli) == -1) fprintf(stderr, "%s: handling() failed", argv[0]); } } int initwinsock () { WSADATA wsa; if (WSAStartup(MAKEWORD(1, 1), &wsa)) { printf("WSAStartup() failed, %lu\n", (unsigned long)GetLastError()); return EXIT_FAILURE; } } int handling(int c, struct sockaddr_in cli) { char recv1[1024], test[1024]; int bytes; bytes = send(c, "> ", strlen("> "), 0); if (bytes == -1) return -1; bytes = recv(c, recv1, sizeof(recv1) - 1, 0); if (bytes == -1) return -1; recv1[bytes] = '\0'; strcat(&test, "secretcode"); if (recv1 == test) printf("ES GEHT!!!!!!"); return 0; }
ich hab es auch schon mit
strcat(&test, "secretcode\n");
strcat(&test, "secretcode\r\n");
strcat(&test, "secretcode\0");
strcat(&test, "secretcode\r\n\0");
strcat(&test, "secretcode\n\0");probiert...
HELP
-
Du weißt aber schon, dass strcat nicht Strings vergleicht, sondern aneinanderhängt?! Außerdem ist das & vor test zuviel. Was du suchst ist wohl eher strcmp bzw. in WinAPI lstrcmp
-
sorry, is noch n überbleibsel von einigen versuchen^^